一、RDB快照
redis将内存数据库快照保存在dump.rdb的二进制文件中。
相关配置:
save 900 1
save 300 10
#60秒内超过10000条命令就触发rdb操作
save 60 10000
rdb文件存放的目录
dir ./
手工通过执行save和bgsave命令,生成rdb文件。
save命令是同步的,会阻塞其他redis 命令,但是它不会消耗额外内存;
bgsave借助操作系统的写时复制功能,。bgsave子进程是主进程fork生成的,在持久化操作的时候,如果有其他命令对redis 进行操作,那么该操作同样会对复制出来的副本进行操作,从而实现数据的一致性。
bgsave是异步的,不会阻塞其他redis命令,需要消耗额外内存。
二、AOF(append-only file)
解决rdb备份redis数据时间间隔久的问题,万一宕机,丢失数据量比较大。
AOF开关配置:
appendonly no
AOF持久化有三种策略:
appendfsync always 每条命令都持久化,影响性能和效率
appendfsync everysec 每秒持久化一次
appendfsync no 将持久化操作交给操作系统触发
AOF重写,AOF文件中可能存在太多无用的命令,通过重写节约空间。
AOF重写策略:
auto-aof-rewrite-percentage 100 aof文件达到上次重写的1倍时进行重写;
auto-aof-rewrite-min-size 64mb aof文件达到64MB时重写;
手工触发aof重写的命令:
bgrewriteaof
三、混合持久化
将rdb二进制文件压缩的有点引入aof中
配置开关:
aof-use-rdb-preamble yes
AOF重写时,将重写这一刻的内存做RDB快照处理,写的过程中的命令写成aof,文件的前部分是rdb格式的二进制内容,后面追加写入redis命令。
redis哨兵架构
解决redis主从架构,主节点挂掉之后,需要人为干预,重新配置主节点的问题;
(1)客户端连接哨兵集群;
(2)哨兵把主节点返回给客户端;
(3)客户端直接连接主节点;
主节点挂了之后,哨兵会自动选举出新的主节点,接着返回给客户端;
在哨兵选举新的主节点的过程中,redis集群无法对外提供服务。
配置文件
复制sentiel.conf文件;
sentiel monitor mymaster 192.168.1.1 6379 2 #数字2表示,哨兵数/2+1,半数以上;