Skip to content

Redis持久化

Redis持久化的三种方式

  • RDB:在指定的时间间隔对数据进行快照存储,类似于Mysql的dump备份文件。
  • AOF:记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来回复原始的数据(Mysql的binlog)。
  • RDB与AOF混合使用:redis4.0新特性。

RDB

sh
# 900s内如果超过1个key改动,则发起快照保存,阻塞
save 900 10 

# 手动触发 非阻塞 从复制主服务器
bgsave

客户端发送shutdown,系统会先执行save命令阻塞客户端,然后关闭服务器

优点:

  1. 紧凑型的二进制文件
  2. fork子进程性能最大化
  3. 启动效率高

缺点:

  1. 生成快照的时机问题
  2. 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 ''