redis 持久化

redis 持久化 之rdb

(redis会创建fork一个子进程来进行持久化,主进程不再做任何操作,将数据写入到临时文件中,当持久化结束之后,将这个临时文件替换上一次持久化好的文件 ,指定时间将数据存入磁盘中,)

默认自动触发条件 1分钟10000次改值 5分钟10改值 15分钟一次改值

手动触发条件 save bgsave 当对数据完整性要求不高是 rdb比aof更加高效

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

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

save 60 10000 #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快

命令savebgsave
io阻塞主线程,必须持久化完成才能响应客户端操作异步调用,执行fork操作执行子线程, fork时会阻塞
优点不会消耗内存不阻塞客户端命令
推荐使用

redis 持久化 之aof

记录所有的写操作

rewrite 重写,默认配置上次重写的一倍且大于64M时

三种同步方式

appendfsync always # 同步写入 每次有数据修改发生时都会写入AOF文件。

appendfsync everysec #每秒钟同步一次,该策略为AOF的缺省策略 ,如果宕机 损失一秒钟的数据。(官方推荐)

appendfsync no #从不同步。高效但是数据不会被持久化。

no-appendfsync-on-rewrite 默认为no (保证数据的安全性)

ppendfsync 意思是append file sync,即当redis执行写操作时是否进行aof文件的同步。这里的appendfsync no的意思是,就算redis有写操作命令进来了,也不会将这些写命令同步写入aof文件,只有执行了命令(如save命令)才会写入文件。aof文件过大就需要重写aof。这里的no-appendfsync-on-rewrite意思是:在重新aof时的aof同步策略,当为yes时,代表相当于重写期间的appendfsync为no,也就是不会把redis的写操作命令写入aof文件,这时候IO阻塞情况就不会太严重,但是为no时,相当于还是按照之前设置的appendfsync那样进行,可能你设置了everysec,这时候在重写aof时,也会把redis的写命令写入aof文件,这就可能会造成IO阻塞

aofrdb
文件大小远大于rdb 因为是同步写操作文件较小
恢复效率恢复效率较aof慢恢复效率高
同步效率每秒同步效率较好aof不同步效率与rdb相同
数据完整性数据完整性强 同步写操作 宕机也就损失一秒,最恶劣情况也只会丢失两秒的数据最后一次数据完整性底数据

两种持久化方式可以共存,优先选择aof来恢复数据,因为aof数据完整性更高

#修复异常aof文件
redis-checek-aof --fix

#修复异常dump文件
redis-checek-dump --fix

如果只做缓存。建议两种都可以开启

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值