redis持久化策略

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存也可以持久化的日志型、Key-Value数据库。

两种方式

RDB(Redis DataBase)

redis的默认持久化机制,在指定的时间间隔内将内存中的数据集快照写入磁盘。

AOF(Append Only File)

以日志的形式记录服务器所处理的每一个写操作,在Redis服务器启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的。

Redis还可以同时使用AOF持久化和RDB持久化。
在这种情况下,当 Redis重启时,它会优先使用AOF文件来还原数据集,因为AOF文件保存的数据集通常比RDB文件所保存的数据集更完整。

优缺点

RDB:

  • 优点
    • 独立紧凑的数据文件,适用于备份和灾难恢复;
    • RDB在恢复大数据集时的速度比AOF的恢复速度要快。
  • 缺点
    • 服务器故障是可能丢失一个保存时间间隔的数据;

AOF:

  • 优点
    • AOF 的默认策略为每秒钟fsync一次,在这种配置下,Redis 仍然可以保持良好的性能,并且就算发生故障停机,也最多只会丢失一秒钟的数据
  • 缺点:
    • 对于相同的数据集来说,AOF 文件的体积通常要大于 RDB 文件的体积。
    • 根据所使用的fsync策略,AOF的速度可能会慢于RDB。

配置

开启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内存快照。

关闭 RDB

1
redis-cli config set save ""
  • 或者变更配置
1
2
3
# save 900 1
# save 300 10
# save 60 10000

开启 AOF

1
2
3
4
redis-cli config set appendonly yes
redis-cli config appendfsync always #每次有数据修改发生时都会写入AOF文件。
或者
redis-cli config appendfsync everysec #每秒钟同步一次,该策略为AOF的缺省策略。

关闭AOF

1
2
redis-cli config set appendonly no
appendfsync no #从不同步。高效但是数据不会被持久化。

参考文档

推荐文章(由hexo文章推荐插件驱动)