当前位置: 首页 > news >正文

Redis_RDB持久化

  • 基于RDB的持久化方式会把当前内存中所有的redis键值对数据以快照的方式写入硬盘文件中,如果需要恢复数据,就把快照文件读到内存中。
  • RDB快照文件是经压缩的二进制格式的文件,它的储存路径不仅可以在redis服务器启动前通过配置参数来设置,还可以在redis运行时通过命令来设置。
  • 有两种方式可以触发rdb持久化机制
    1. 通过save和bgsave等命令手动触发
    2. redis服务器会根据redis.conf配置文件里设置的方式定期把内存数据写入快照
  • 基于rdb的持久化方式比较适合备份和灾备场景,但rdb无法实现即时备份,即上次生成快照后的修改会丢失。

save和bgsave命令

  • Redis客户端运行save命令后,Redis服务器会把当前内存里的数据写入快照文件,在写入的过程中会暂停执行其他命令,直到写完快照文件。
  • 如果当前Redis内存数据很多,那么一旦执行save命令,服务器就会长时间暂停执行命令,造成大量连接阻塞,从而导致线上问题,所以一般在执行save命令时需要非常谨慎。
  • 和save命令对应的是bgsave命令,这里bg的含义是background,即后台运行。当用户输入bgsave命令后,Redis服务器会创建一个新的进程,在该进程里把内存数据写入快照文件里,在写的过程中Redis服务器能继续执行其他来自客户端的命令。
  • 如果要查看bgsave命令的结果,可以继续执行lastsave命令,该命令返回的是一个时间戳,表示最近一次把内存数据存入快照文件的时间,如果该时间和 bgsave命令的运行时间能对应上,则能说明bgsave命令成功执行。

RDB持久化实践

1.修改配置文件

在redis的redis.conf配置文件中,可以通过save参数配置生成的rdb快照的条件,具体代码如下:

save 600 1
save 300 100
save 60 1000

第一行:表示当在600秒内有一个或者一个以上的键被修改时就会生成快照

第二行:表示当在300秒内有大于或者等于100个键被修改时就会生成快照

第三行:表示当在60秒内有大于或者等于1000个键被修改时就会生成快照

注意:这三个条件是“或”的关系,即只要有一个条件被满足,就会生成快照,从中能看出,rdb持久化文件只是当条件满足后生成快照,所以无法即时保存当前状态的内存数据。也就是说,通过rdb恢复数据时,会丢失上次生成快照后更新的数据

同时,在redis.conf里加上如下两条描述快照文件名的配置:

dbfilename redis.rdb
2.重启redis

检查redis是否启动

ps -ef|grep redis

关闭redis

redis-cli -a 123456 shutdown

重启redis

redis-server redis.conf
3.操作redis
set name pp

查看是否生成redis.rdb文件

两种持久化方式对比

  • AOF可以设置一秒写一次持久化文件,所以相对于RDB而言,这种方式能更好地追加内存数据,从而能更好地达到持久化的效果,而且AOF是以“在文件末尾追加”的方式写入数据,所以性能较好
  • AOF持久化的文件一般会大于RDB快照,所以用AOF恢复数据时速度会比RDB要慢
  • RDB的快照是二进制文件,所以一般比AOF要小,所以在恢复数据时占优势,而且通过bgsave等方式生成快照时,redis服务器会新建一个子进程,所以不会影响redis服务器继续命令执行
  • 在实际项目当中可以同时使用这两种方式,当数据误删的情况时,可以用AOF持久化文件来恢复数据,在一般情况下,可以用RDB快照来恢复数据。
http://www.lryc.cn/news/435175.html

相关文章:

  • SOP流程制定:vioovi ECRS工时分析软件的智慧引领
  • 并发编程-synchronized解决原子性问题
  • CSS之我不会
  • AI绘画:SD打光神器!(Stable Diffusion进阶篇:Imposing Consistent Light)
  • QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第二期]
  • 参赛心得和思路分享:2021第二届云原生编程挑战赛2: 实现一个柔性集群调度机制
  • 具体函数的卡诺图填入
  • STM32 HAL freertos零基础(六)计数型信号量
  • Dynamics CRM Ribbon Workbench-the solution contains non-entity components
  • 谷歌对抗司法部:为什么谷歌的“数百个竞争对手”说法站不住脚
  • 重生奇迹MU 沉迷升级的快感 法魔升级机器人
  • 从地图到智能地图:空间索引技术如何改变我们的世界
  • 深入理解AI Agent架构,史上最全解析!赶紧码住!
  • 苹果iOS/ iPadOS18 RC 版、17.7 RC版更新发布
  • CAN集线器(工业级、隔离式)
  • 代码随想录训练营 Day57打卡 图论part07 53. 寻宝(prim,kruskal算法)
  • Hibernate QueryPlanCache 查询计划缓存引发的内存溢出
  • 前端开发的观察者模式
  • Pycharm 输入三个引号没有自动生成函数(方法)注释
  • lammps后处理:多帧孔洞体积和孔隙率的计算
  • 免费且实用:UI设计常用的颜色参考网站和一些Icon设计网站
  • log4j日志封装说明—slf4j对于log4j的日志封装-正确获取调用堆栈
  • JVM面试真题总结(六)
  • C语言代码练习(第十八天)
  • linux上使用rpm的方式安装mysql
  • html 中如何使用 uniapp 的部分方法
  • Samtec连接器小课堂 | 连接器电镀常识QA
  • 大模型备案全网最详细流程解读(附附件+重点解读)
  • 基于2143规则编码的uint8_t如何转换成float
  • [项目][WebServer][整体框架设计]详细讲解