Redis 持久化技术 RDB 与 AOF

默认分类 · 2021-10-25

持久化是做什么的?持久化的目的是将内存中的数据写入到磁盘中。

为什么需要持久化?因为内存中的数据是临时的,如果遇到服务器宕机或者断电,那么内存中的数据就彻底不见了。

什么宕机?宕机也叫死机,是指系统发生了不可恢复的错误。如常见的WINDOWS系统蓝屏。

RDB 与 AOF 全称

RDB Redis DataBase
AOF Append Only File

RDB 与 AOF 两种技术的区别

RDB又称快照模式(snapshot),在某个时间点,将内存中在所有redis数据以二进制形式保存到磁盘中,是一种全量模式
AOF又称追加模式,他是将Redis服务器所执行的命令,以追加的方式写入到文本文件中

RDB 自动触发策略

在配置文件redis.conf中,按照以下格式插入三条数据

save M N

以上格式代表,在 M 秒内,如果Redis数据发生了 N 次变化,则执行BGSAVE命令

save 900 1 # 900内,如果数据发生1次变化,则执行BGSAVE进行RDB
save 300 10
save 60 10000

为何是三条,为啥不能是五条、十条?因为Redis规定,最多可以同时配置三条

AOF 配置策略

在配置文件redis.conf中,开始AOF

#把no改为 yes
appendonly yes
#

在配置文件中,三种策略任选其一

#同步策略,只要redis数据发生变化,就开始AOF,性能差
appendfsync always

#每秒同步,每秒钟,AOF一次(推荐配置,兼顾了性能和数据的完整性)
appendfsync everysec

#非主动同步,操作系统决定何时AOF,脱离了程序员管控,充满了不确定因素(如,服务器断电了,Redis服务挂掉了)
appendfsync no

其他总结

RDB 以二进制保存,体积小,所以恢复数据速度快,但是容易大片数据
AOF 以文本形式保存,体积大,数据恢复速度相对慢,但是数据安全性相对更好

redis 数据库
Theme Jasmine by Kent Liao