Redis基于事件驱动模型, 单进程单线程. 也是内存数据库, 不同于Memcached的是, Redis提供持久化存储, 支持多种数据结构, 支持数据备份.
优势
- 内存数据库, 支持读并发11万,写并发8万
- 可持久化, 通过RDB(生成数据文件,启动时载入)和AOF(记录下到某一时刻的写操作)持久化数据
- 支持多种数据结构, string,list,set,sorted sort,hash,因此可称为数据结构服务器
- 支持消息订阅与发布功能
- 支持事务, Multl命令标记开始, 中间执行多条操作, 在执行exec之前命令都放到队列里面。 不过只能保证在客户端发起的事务命令可以连续执行,不会插入其他请求
安装
wget http://download.redis.io/releases/redis-2.8.17.tar.gz tar xzf redis-2.8.17.tar.gz cd redis-2.8.17 make
make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:
下面启动redis服务.
cd src
./redis-server
启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互了。 比如:
cd src ./redis-cli redis> set foo bar OK redis> get foo "bar"
主从复制原理
一般是一台主库, 多台从库. 主库写操作, 同时更新从库. 从库进行读操作, 一般不进行写操作,
复制原理
- 复制初始化阶段: 从库启动时, 会向主库发送SYNC请求, 主库收到请求后保存当前快照, 同时缓存在此期间的执行命令. 完成后将缓存命令和快照发送给从库, 从库载入快照, 执行缓存的命令.
- 复制同步阶段: 主库每执行一条写操作, 发送给从库, 从库也执行一遍.