# 第一章)初见redis
https://cachecloud.github.io/
网站持续更新Redis开发运维的相 关知识和经验
想要了解一个东西必须从以下方面入手。
- 前世今生
- 众多特性(实现原理是什么?)
- 典型应用场景
- 安装配置(怎么运维?)
- 如何好用(怎么用?)
# Redis简介
Redis是一种基于键值对(key-value)的NoSQL数据库,与很多键值对数据库不同的是,Redis中的值可以是由string(字符串)、hash(哈希)、 list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、 HyperLogLog、GEO(地理信息定位)等多种数据结构和算法组成,因此 Redis可以满足很多的应用场景,而且因为Redis会将所有数据都存放在内存中,所以它的读写性能非常惊人。不仅如此,Redis还可以将内存的数据利用快照和日志的形式保存到硬盘上,这样在发生类似断电或者机器故障的时候,内存中的数据不会“丢失”。除了上述功能以外,Redis还提供了键过期、发布订阅、事务、流水线、Lua脚本等附加功能。总之,如果在合适的场景使用好Redis,它就会像一把瑞士军刀一样所向披靡。
# Redis前世今生
2008年,Redis的作者Salvatore Sanfilippo在开发一个叫LLOOGG的网站时,需要实现一个高性能的队列功能,最开始是使用MySQL来实现的, 但后来发现无论怎么优化SQL语句都不能使网站的性能提高上去,再加上自己囊中羞涩,于是他决定自己做一个专属于LLOOGG的数据库,这个就是 Redis的前身。后来,Salvatore Sanfilippo将Redis1.0的源码开放到GitHub上,可能连他自己都没想到,Redis后来如此受欢迎。
Redis的作者Salvatore Sanfilippo (opens new window)
Redis1.0的源码 (opens new window)
# Redis特性
- 速度快
- 基于键值对的数据结构服务器
- 丰富的功能
- 简单稳定:1、整个项目代码量少。2、Redis使用单线程模型。3、Redis不需要依赖于操作系统中的类库(例如Memcache需要依赖 libevent这样的系统类库)。
- 客户端语言多
- 持久化
- 主从复制
- 高可用和分布式:高可用是redis2.8实现Redis Sentinel、Redis3.0版本正式提供了分布式实现Redis Cluster。