Redis持久化是如何实现的

时间:2022-11-29 18:03:05

Redis持久化:

redis的一大特点就是可以将数据进行持久化,在一定程度上确保了数据的安全性,但不是绝对的;

持久化分为rdb(快照持久化)和aof(精细持久化);

快照持久化,是默认开启的;会自动保存数据,当启动时会在文件夹中生成dump.rdb文件;存放持久化后的数据;

当然我们也可以设置持久化的频率,在redis.conf文件中通过save进行设置,默认有三种情况,每秒超过一万数据或每5分钟有10条数据的时候再或者每15分钟有1条记录,都会执行快照持久化,

当然也可以通过bgsave的方法来手动进行一个快照持久化;(也可以通过ip和端口号就给别人进行手动持久化);

如果频繁的快照持久化,会降低性能和效率,

但是这样也出现了一个问题,就是当一分钟内如果有一万条数据时,不会提交,但是在下一次提交之前,停电了,这样就会丢失掉这些数据;

当时想到的解决方法呢就是和(AOF)精细持久化进行一个结合,达到一个秒级的持久化;

这个持久化需要我们手动进行开启,(注意,AOF开启之后,之前的数据都会丢失,所以要在一开始使用时就要配置好)开启的方法就是在配置redis.conf,将appendonly 改为yes;同时还可以更改文件名称;然后重新启动服务,这时精细化持久化就启动好了; Redis持久化是如何实现的

在快照持久化的同时,我们进行精细持久化,

比如,我们每隔一个小时进行一次快照持久化,这中间我们添加精细持久化;当55分的时候宕机了,我们还是可以通过RDB和AOF来恢复我们的数据,尽可能减少了损失;等到一个小时以后我们进行了快照持久化,数据就会保存在rdb的文件中,我们就可以将aof的持久化文件重新开始; Redis持久化是如何实现的

关于精细持久化存在三个配置

  • always只要发生改变就会发生持久化,这样是很浪费性能的,不推荐使用(我们的CPU不用干其他工作了,就在这里看着持久化)

  • everysec每秒进行一次快照持久化;推荐使用这种

  • no 是不确定,看服务器的使用情况(心情)来定(不安全,不推荐)

我们还可以通过把rdb文件和aof文件复制到另外一个redis服务器上,就可以共享数据;