Redis 持久化之RDB和AOF

  1. Redis 有两种持久化方案,RDB (Redis DataBase)和 AOF (Append Only File)。

  • RDB: Redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis 重启会通过加载dump.rdb文件恢复数据。
  • AOF:Redis 默认不开启。它的出现是为了弥补RDB的不足(数据的不一致性),所以它采用日志的形式来记录每个写操作,并追加到文件中。Redis 重启的会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。

  2. 两者的优缺点。

  • RDB的优点:(1)适合大规模的数据恢复; (2)如果业务对数据一致性和完整性要求不高,是很好的选择
  • RDB的缺点:(1)数据的完整性和一致性不高,因为RDB可能在最后一次备份时宕机了;(2)备份时占用内存,因为Redis 在备份时会独立创建一个子进程,将数据写入到一个临时文件;
  • AOF的优点:(1)数据一致性和完整性都很好。
  • AOF的缺点:(1)AOF记录的内容多,文件会越来越大,数据恢复也会越来越慢。

  3. 配置文件(redis.conf)

  • RDB:  save <seconds> <changes> #

        save "" save 900 1

        save 300 10

        save 60 10000

        注释:save <指定时间间隔> <执行指定次数更新操作>,满足条件就将内存中的数据同步到硬盘中。官方出厂配置默认是 900秒内有1个更改,300秒内有10个更改以及60秒内有  10000个更改,则将内存中的数据快照写入磁盘。

        恢复数据:将dump.rdb 文件拷贝到redis的安装目录的bin目录下,重启redis服务即可。在实际开发中,一般会考虑到物理机硬盘损坏情况,选择备份dump.rdb 。

  • AOF:  找到 APPEND ONLY MODE 对应内容:将append only no 改成append only yes  

        指定本地数据库文件名,默认值为 appendonly.aof:appendfilename "appendonly.aof"

        指定更新文件:appendfsync always (同步持久化,每次发生数据变化会立刻写入到磁盘中。性能较差当数据完整性比较好(慢,安全))

               appendfsync everysec (出厂默认推荐,每秒异步记录一次(默认值))

        配置重写机制:auto-aof-rewrite-percentage 100

               auto-aof-rewrite-min-size 64mb(当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时触发。一般都设置为3G,64M太小了。)

 

相关文章