Redis持久化
Redis持久化的三种方式
- RDB:在指定的时间间隔对数据进行快照存储,类似于Mysql的dump备份文件。
- AOF:记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来回复原始的数据(Mysql的binlog)。
- RDB与AOF混合使用:redis4.0新特性。
RDB
sh
# 900s内如果超过1个key改动,则发起快照保存,阻塞
save 900 10
# 手动触发 非阻塞 从复制主服务器
bgsave
客户端发送shutdown,系统会先执行save命令阻塞客户端,然后关闭服务器
优点:
- 紧凑型的二进制文件
- fork子进程性能最大化
- 启动效率高
缺点:
- 生成快照的时机问题
- fork子进程的开销问题
AOF
AOF(append only file),只追加文件,
开启
sh
# 配置
appendonly yes
appendfilename 'appendonly.aof'
dir /usr/local/redis/data
同步策略
sh
# 每秒同步一次,缺省
appendfsync everysec
# 有数据修改时写入aof文件
appendfsync always
#从不
appendfsync no
常用配置
sh
# 每秒同步一次,缺省
appendfsync everysec
# aof重写期间是否禁止fsync
no-appendfsync-on-rewrite no
#当前aof文件大于多少字节后才触发重写
auto-aof-rewrite-min-size 64mb
# 当前写入日志文件的大小超过上一次rewrite之后文件的大小的100%时,也就是2倍时触发rewrite
auto-aof-rewrite-percentage 100
# 如果aof文件结尾损坏,redis启动时是否人载入aof文件
aof-load-truncated yes
混合模式RDB&AOF
开启 aof-use-rdb-preamble true
, 通过bgrwriteaof
命令完成
二者动态切换
sh
#现将rdb文件备份
cp dump.rdb dump.rdb.bak
#开启aof
redis-cli config set appendonly yes
#关闭rdb
redis-cli config set save ''