Redis的持久化机制

Redis提供RDB和AOF两种持久化方式。RDB通过创建子进程生成快照实现,适用于大规模数据恢复,可能丢失最后一次快照后的数据。AOF记录操作日志,以追加方式写入,保证数据安全性,支持不同同步策略。当两者共存时,优先使用AOF。为防止数据丢失,推荐配置中同时开启RDB和AOF。
摘要由CSDN通过智能技术生成

Redis提供两种持久化机制,一种RDB持久化(默认)

另一种是AOF(append only file)持久化。

RDB是什么?

原理是redis会单独创建(fork)一个与当前进程一模一样的子进程来进行持久化,这个子进程的所有数据(变量,环境变量,程序计数器等)都和原进程一模一样,会先将数据写入到一个临时文件中,待持久化结束了,再用这个临时文件替换上次持久化好的文件,整个过程中,主进程不进行任何的io操作,这就确保了极高的性能。

1.1这个持久化文件在哪里?

持久化文件:dump.rdb在redis.conf配置文件中定义的;一般情况下我们会给定一个文件存储。

dir ./ 当前文件夹,所以dump.rdb就会在myredis文件夹下生成;如果在不同的文件下生成dump.rdb ,eg:第一次在myredis文件下生成的dump.rdb下有10万条数据,第二次启动的时候在opt文件夹下启动,opt文件下会生成新的dump.rdb文件,这个时候文件是空的,这种情况下容易造成数据丢失,为了防止数据丢失,在dir 下指定文件eg:dir /myredis(自行指定)

1.2他什么时候fork子进程,或者什么时候触发rdb持久化机制

1.2.1shutdown时,如果没有开启aof,会触发。(正常操作可以,)

1.2.2配置文件中默认的快照配置

 900秒中,redis增删改操作是否有1次,只要有一次就触发rdb持久化机制

300秒钟,redis增删改操作是否有10次,只要总和有超过10次就触发rdb持久化机制

60秒钟,redis增删改操作是否有10000次,只要总和超过10000次就触发rdb持久化机制

1.2.3执行命令save(主进程)或者bgsave ,save是只管保存,其他不管,全部阻塞; bgsave:redis会在后台异步进行快照操作,同时可以响应客户端的请求执行flushall命令,但是里面是空的,无意义。 

 bgsave是专门做持久化的,持久化结束,这个进程也就结束。

2.AOF是什么?默认是关闭的。redis.conf配置文件中修改appendonly  yes

拓展:快速定位;vim redis.conf打开文件后,直接 /,之后输入需要搜索到的值,eg:/append; 按回车,光标找到所有的指定的字符 ,按 n 按钮是下一个。 

原理是将Redis的操作文件以追加的方式写入文件,读操作是不记录的

2.1这个持久化文件在哪里?

与rdb的持久化文件一样,都在redis.conf中dir  ./文件下配置

2.2触发机制(根据配置文件配置项)

no:表示等操作系统进行数据缓存同步到磁盘(快,持久化没保证)

always:同步持久化,每次发生数据变更时,立即记录到磁盘(慢,安全)

everysec:表示每秒同步一次(默认值,很快,但可能会丢失一秒以内的数据)

总结:

1.redis提供了RDB持久化方案,为什么还要AOF?

优化数据丢失问题,rdb会丢失最后一次快照的数据,AOF丢失不会超过2秒的数据。

2.如果AOF和RDB同时存在,听谁的?

AOF

3.RDB和AOF优势劣势?

RDB适合大规模的数据恢复,对数据完整性和一致性不高,在一定间隔时间做一次备份,如果Redis意外down掉的话,就会丢失最后一次快照后的所有操作。

AOF根据配置项而定

官方建议,两种持久化机制同时开启,如果两个同时开启,优先使用AOF持久化机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值