redis是一个key-value存储系统,和memcached类似,它支持存储的value类型更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)等类型。和memcached一样,为了保证效率,数据都是缓存在内存中。区别是redis会周期性的将数据同步到磁盘,并在此基础上实现了master-slave同步。
redis主从复制的特点:
1.master可以有多个slave。
2.redis支持多级master-slave结构,即slave也可以作为其他slave的master。
3.主从同步时,master和slave都是非阻塞的。
配置文件redis.conf
daemonize yes #是否作为守护进程运行
pidfile /var/run/redis/redis-server.pid #配置 pid 的存放路径及文件名
port 6379 #Redis 默认监听端口
timeout 300 #客户端闲置多少秒后断开连接
loglevel notice #日志记录级别
logfile /var/log/redis/redis-server.log #指定日志输出的文件名
#设置数据库的数量。默认连接的数据库是0,可以通过 select N 来连接不同的数据库
databases 16
#保存数据到磁盘的策略
#n秒内如果超过m个key被修改,就自动发起快照保存
save 900 1
save 300 10
save 60 10000
rdbcompression yes #当 dump .rdb数据库的时候是否压缩数据对象
dbfilename dump.rdb #dump 数据库的数据保存的文件名
dir /var/lib/redis #redis 的工作目录
主从复制配置
一个redis服务实例需要一个配置文件。
因此启动slave只需要复制master的配置文件然后做少量修改即可。
#master的配置redis.conf:
port 10000
#slave-a的配置slave-a.conf:
port 10001
dbfilename slave-a.rdb
slaveof 127.0.0.1 10000
#slave-b的配置slave-b.conf:
port 10002
dbfilename slave-b.rdb
slaveof 127.0.0.1 10001
启动服务
sudo redis-server /etc/redis/redis.conf
sudo redis-server /data/slave/slave-a.conf
sudo redis-server /data/slave/slave-a.conf