Redis持久化是如何实现的

举报
浅羽技术 发表于 2022/11/29 16:16:24 2022/11/29
【摘要】 Redis持久化:redis的一大特点就是可以将数据进行持久化,在一定程度上确保了数据的安全性,但不是绝对的; 持久化分为rdb(快照持久化)和aof(精细持久化);快照持久化,是默认开启的;会自动保存数据,当启动时会在文件夹中生成dump.rdb文件;存放持久化后的数据;当然我们也可以设置持久化的频率,在redis.conf文件中通过save进行设置,默认有三种情况,每秒超过一万数据或每5...

Redis持久化:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。