Redis持久化是如何实现的
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis持久化是如何实现的相关的知识,希望对你有一定的参考价值。
Redis持久化:
redis的一大特点就是可以将数据进行持久化,在一定程度上确保了数据的安全性,但不是绝对的;
持久化分为rdb(快照持久化)和aof(精细持久化);
快照持久化,是默认开启的;会自动保存数据,当启动时会在文件夹中生成dump.rdb文件;存放持久化后的数据;
当然我们也可以设置持久化的频率,在redis.conf文件中通过save进行设置,默认有三种情况,每秒超过一万数据或每5分钟有10条数据的时候再或者每15分钟有1条记录,都会执行快照持久化,
当然也可以通过bgsave的方法来手动进行一个快照持久化;(也可以通过ip和端口号就给别人进行手动持久化);
如果频繁的快照持久化,会降低性能和效率,
但是这样也出现了一个问题,就是当一分钟内如果有一万条数据时,不会提交,但是在下一次提交之前,停电了,这样就会丢失掉这些数据;
当时想到的解决方法呢就是和(AOF)精细持久化进行一个结合,达到一个秒级的持久化;
这个持久化需要我们手动进行开启,(注意,AOF开启之后,之前的数据都会丢失,所以要在一开始使用时就要配置好)开启的方法就是在配置redis.conf,将appendonly 改为yes;同时还可以更改文件名称;然后重新启动服务,这时精细化持久化就启动好了;
在快照持久化的同时,我们进行精细持久化,
比如,我们每隔一个小时进行一次快照持久化,这中间我们添加精细持久化;当55分的时候宕机了,我们还是可以通过RDB和AOF来恢复我们的数据,尽可能减少了损失;等到一个小时以后我们进行了快照持久化,数据就会保存在rdb的文件中,我们就可以将aof的持久化文件重新开始;
关于精细持久化存在三个配置
-
always只要发生改变就会发生持久化,这样是很浪费性能的,不推荐使用(我们的CPU不用干其他工作了,就在这里看着持久化)
-
everysec每秒进行一次快照持久化;推荐使用这种
-
no 是不确定,看服务器的使用情况(心情)来定(不安全,不推荐)
我们还可以通过把rdb文件和aof文件复制到另外一个redis服务器上,就可以共享数据;
以上是关于Redis持久化是如何实现的的主要内容,如果未能解决你的问题,请参考以下文章