0%

redis持久化

文章字数:517,阅读全文大约需要2分钟

redis支持数据类型丰富的持久化操作,可以把数据保存在磁盘中,防止宕机之类的情况下数据丢失。

持久化方式

  1. RDB:不定期使用异步方式保存二进制数据到磁盘,速度快、效率高、文件小。但是缓存一致性低。即如果半个小时备份一次,宕机到上一次备份直接的数据可能会丢失。保存文件过大还会导致redis反应变慢(4.x之前默认)

  2. aof:保存的是每次操作的命令,可以选择每秒同步、每次修改同步、不同步。优点是缓存一致性好,数据完整。缺点是文件大,redis再次启动速度慢。会保存一些无用数据,比如已经被更改的数据。

配置

6379.conf(监听的端口.conf)
搜索save

RDB

1
2
3
save 900 1              #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。
save 300 10 #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。
save 60 10000 #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照。

快照在dump.rdb

AOF

1
2
3
appendfsync always     #每次有数据修改发生时都会写入AOF文件。
appendfsync everysec #每秒钟同步一次,该策略为AOF的缺省策略。
appendfsync no #从不同步。高效但是数据不会被持久化。

混合使用

  1. 开启混合模式
    1
    aof-use-rdb... yes
  1. 设置aof重写大小(也可以手动)
1
auto-aof-rewrite-...两个
  1. 触发AOFrewrite时,会清空AOF,直接保存当前redis数据(并不是真的重写)数据都在aof文件里,以二进制+命令的形式存储