redis 持久化 ——RDB
RDB
redis database
的简写 ;
在指定时间间隔后,将内存中的数据集快照写入数据库 ;在恢复时候,直接读取快照文件,进行数据的恢复 ;
在进行 RDB
的时候,redis
的主线程是不会做 io
操作的,主线程会 fork
一个子线程来完成该操作;
子线程在操作的时候,会先将数据写进临时文件中,等到内存中所有的数据都写进临时文件中以后,才会进行文件的替换,用该临时文件替换掉上一次的持久化文件 ;
从子线程的工作方式,我们也可以看出,最后一次持久化操作以后的数据面临着丢失的风险 ;
关于 fork
fork
作用是复制,复制当前线程的一个副本,副本是什么概念,复制品的意思,也就是说,主线程的数据,都会被 copy
来,这样就导致一个问题,每次进行 RDB
的时候,其实内存中是有两份数据的,这个需要考虑到 ;
dump.rdb 文件
RDB
方式保存的文件是 dump.rdb
文件 ;
在配置文件中进行配置,不再累赘,前一篇
redis
配置文件 的博客,已经讲了
如何触发 RDB 快照
- 使用
save
命令,会立刻对当前内存中的数据进行持久化 ,但是会阻塞,也就是不接受其他操作了; flushall
命令也会触发持久化 ;- 满足配置条件中的触发条件 ;
bgsave
是异步进行,进行持久化的时候,redis
还可以将继续响应客户端请求 ;- 重新启动
redis
,也会触发,记进行加载持久化文件 ;
可以通过 lastsave
获取上一次 save
的时间 ;
如何恢复
将备份文件放在 redis
的安装目录,然后启动 redis
即可 ;
优势
- 适合大规模文件的备份,速度比较快 ;
- 对数据的完整性和一致性要求不高
- 在备份的时候,是子线程在操作,不需要
redis
的主线程进行IO
操作,不会影响性能;
劣势
- fork 对内存占用 ;
- 最后一次持久化以后的数据存在丢失的风险 ;
停掉 RDB
在配置文件中,配置 save ""
即可 ;
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 用 C# 插值字符串处理器写一个 sscanf
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!