Redis的持久化
Redis的持久化分为rdb(快照) aof(append-only file) 和rdb和aof混合模式
Rdb默认情况下存储的名称为 dump.rdb的二进制文件
设置
save 900 1 900秒内有一个key改动则保存
save 300 10 30秒内有10个key改动则保存
save 60 10000 60秒内10000个key改动则保存
也可以手动的改动 save和bgsave,每次的保存都会覆盖原有的rdb快照
image.png
Rdb快照存储虽然是二进制存储占用空间小,但是存在数据丢失的风险,比如60秒之内10000个key改动保存,如果59秒宕机了那59秒内发生的数据变化就丢失了,所以aof就诞生了,
Aof持久化可以将修改的每一条写指令或者一秒中的写指令记录到appendonly.aof中,aof的文件是明文所以aof的文件大,并且redis启动的时候恢复数据慢
appendonly.aof的内容
image.png
*3带面执行的个数 sadd set b 三个 sadd一个 set 一个 b一个 共三个
$4 sadd 4个字母
Aof的共有三个选项将数据持久化模式
always 每次更新都会追加到aof文件中
everysec 每秒记录一次,可能会丢失一秒的数据
no将数据交给系统来执行,效率高但是最不安全
aof可以重写,重写的概念就是比如将helloredis这个key 连续6次的加1,那重写之后就是直接将helloredis赋值为6,这样减少了aof的占用空间当然redis恢复的时候也更快
重写的两个参数
auto‐aof‐rewrite‐min‐size 64mb //aof文件至少要达到64M才会自动重写,文件太小恢复速度本来就 很快,重写的意义不大
auto‐aof‐rewrite‐percentage 100 //aof文件自上一次重写后文件大小增长了100%则再次触发重写
image.png
混合模式
aof‐use‐rdb‐preamble yes 开启混合模式
混合模式的文件依然是appendonly.aof文件,混合模式发生在aof的重写阶段,redis会新开启一个线程,将已有的aof文件转化为rdb文件,下一刻的命令依然是aof模式增量存储,当然rdb依然存储在aof文件中, 混合模式的appendonly.aof存储的结构就是一部分是rdb一部分是aof