ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Redis持久化策略之RDB快照

2021-05-18 18:00:37  阅读:184  来源: 互联网

标签:快照 bgsave Redis 命令 丢失 RDB save 数据


目录

介绍

触发机制:

bgsave命令生成快照的过程如下:

RDB的缺陷:

1.可能会丢失数据

(1)快照周期引发的数据丢失风险形象图:

(2)配置策略引发的数据丢失:

2.占用系统资源、阻滞系统服务


介绍

快照可以让redis在内存中的数据持久化到快照文件,这样下次启动redis时就能从文件中直接加载数据到内存;也为redis故障宕机做了一个保障。

RDB即Redis DataBase ,默认的持久化方式。按照一定的周期将内存的数据以快照的形式保存到硬盘中,对应产生的数据文件为dump.rdb。

 

触发机制:

(1)用户发送bgsave命令(fork一个子进程,子进程生成快照,父进程继续接收用户命令)

(2)用户发送save命令(发送save命令后,到快照创建完成之前系统不会再接收新的命令,即save命令会阻塞后面的命令,而bgsave不会)

(3)达到配置文件中的save参数定义的周期(也是用bgsave模式)

(4)执行 flushall 命令

(5)退出redis时(然后redis先启用save保存快照,之后再关闭服务器)

(6)主从架构,从服务器向主服务器发送sync命令来执行复制操作时,只要主服务器当时没有进行bgsave操作,那么主服务器就会执行bgsave操作

 

bgsave命令生成快照的过程如下:

 

(1)Redis使用fork函数复制一份当前进程(父进程)的副本(子进程);

(2)父进程继续接收并处理客户端发来的命令,而子进程开始将内存中的数据写入硬盘中的临时文件;

(3)当子进程写入完所有数据后会用该临时文件替换旧的 RDB 文件,至此一次快照操作完成。

 

RDB的缺陷:

1.可能会丢失数据

通过RDB方式实现持久化,一旦Redis异常退出,就会丢失最后一次快照以后更改的所有数据(因为临时文件写入完成才会替换旧快照文件)。这就需要开发者根据具体的应用场合,通过组合设置自动快照条件的方式来将可能发生的数据损失控制在能够接受的范围。例如,使用Redis存储缓存数据时,丢失最近几秒的数据或者丢失最近更新的几十个键并不会有很大的影响。如果数据相对重要,希望将损失降到最小,则可以使用AOF方式进行持久化。

(1)快照周期引发的数据丢失风险形象图:

 

(2)配置策略引发的数据丢失:

配置文件中save 60 1000,如果我在60秒内只更新了900条数据,然后系统崩溃了,那么这900条数据就没了

 

2.占用系统资源、阻滞系统服务

大数据量的时候,持久化操作会长时间阻滞系统服务,即使是bgsave模式也有可能占用较多的系统资源而影响服务性能

标签:快照,bgsave,Redis,命令,丢失,RDB,save,数据
来源: https://blog.csdn.net/qq_43549323/article/details/116997467

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有