备份数据、负载均衡,一个Master可以有多个Slaves。
主从模式强调 数据备份,读写分离等
Redis 复制功能的几个重要方面:
sentinel发现master挂了后,就会从slave中重新选举一个master。
哨兵模式强调高可用
Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:
监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。
客户端中不会记录redis的地址(某个IP),而是记录sentinel的地址,这样我们可以直接从sentinel获取的redis地址,因为sentinel会对所有的master、slave进行监控,它是知道到底谁才是真正的master的,例如我们故障转移,这时候对于sentinel来说,master是变了的,然后通知客户端。而客户端根本不用关心到底谁才是真正的master,只关心sentinel告知的master。
cluster是为了解决单机Redis容量有限的问题,将数据按一定的规则分配到多台机器。
集群模式提高并发量。
redis支持两种方式的持久化,可以单独使用或者结合起来使用。
1、第一种:RDB方式redis默认的持久化方式(快照)
2、第二种:AOF方式(日志追加)
RDB快照模式(snapshot):
save 900 1 //900秒内如果超过1个key被修改,则发起快照保存
save 300 10 //300秒内容如超过10个key被修改,则发起快照保存
save 60 10000 //(这3个选项都屏蔽,则rdb禁用)
stop-writes-on-bgsave-error yes // 后台备份进程出错时,主进程停不停止写入
rdbcompression yes // 导出的rdb文件是否压缩
Rdbchecksum yes //导入rbd恢复时数据时,要不要检验rdb的完整性
dbfilename dump.rdb //导出来的rdb文件名
dir /var/lib/redis/ //rdb的放置路径
AOF日志模式:
appendonly yes //启用aof持久化方式
# appendfsync always //每收到写命令就立即强制写入磁盘,最慢的,但是保证完全的持久化,不推荐使用
appendfsync everysec //每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐
# appendfsync no //完全依赖os,性能最好,持久化没保证(操作系统自身的同步)
no-appendfsync-on-rewrite yes //正在导出rdb快照的过程中,要不要停止同步aof
auto-aof-rewrite-percentage 100 //aof文件大小比起上次重写时的大小,增长率100%时,重写
auto-aof-rewrite-min-size 64mb //aof文件,至少超过64M时,重写
注意:
1、AOF和RDB同时存在的时候,优先使用AOF恢复数据,因为AOF保存的数据集更完整;
2、AOF和RDB恢复的时候,RDB更快,直接拷贝数据,AOF还要执行语句;
3、建议同时使用AOF和RDB
参考资料:
Redis主从同步,哨兵
redis sentinel架构详解