Redis持久化——RDB快照

介绍

我们知道Redis是运行在内存中的数据库,那么当我们关闭Redis服务器后,内存中的数据会不会丢失?
当然是不会!因为Redis有持久化机制,所谓持久化,就是将内存中的数据保存到磁盘文件上,以此来达到永久保存数据的目的。

在Redis中,有两种持久化机制:

  • RDB持久化
  • AOF持久化

RDB持久化又叫做RDB快照,简单点说,RDB快照就是记录Redis中此刻这一瞬间的数据到文件中,“对Redis内存数据进行一次抓拍”。

RDB快照既可以手动执行,也可以自动定期执行,将此刻时间点上的数据库状态保存到一个RDB文件中。

手动执行

有两个Redis命令可以用于生成RDB文件:

  • SAVE命令
  • BGSAVE命令
    生成的RDB文件就是执行命令此刻的数据库状态
    我们知道,Redis服务器是单进程(单线程)的,这两个命令的区别在于:
  • 当执行SAVE命令时,会阻塞Redis服务进程,直到RDB文件生成完毕,在此期间,Redis不会处理任何请求。
  • BGSAVE命令不会阻塞服务器进程,而是先派生出一个子进程,由子进程来负责生成此刻的RDB文件,服务器进程可以继续处理请求。

自动定期执行

Redis允许我们通过配置选项,来每隔一段时间自动执行一次BGSAVE命令
例如,我们在配置文件中给出参数:

save 900 1

这个配置意思是:服务器在900秒内,对数据库至少进行了1次修改,之后就会自动执行BGSAVE命令。
我们还可以同时给出多个条件:

save 900 1
save 300 10
save 60 10000

满足以上条件之一,就会自动执行BGSAVE命令:

  • 900 秒之内,对数据库进行了至少 1 次修改;
  • 300 秒之内,对数据库进行了至少 10 次修改;
  • 60 秒之内,对数据库进行了至少 10000 次修改

RDB文件的载入

RDB文件的载入是在服务器启动时自动完成的,Redis中没有专门用于载入RDB文件的命令。
在服务器启动时,如果检测到RDB文件存在,那么就会自动载入RDB文件,内存中的数据就会恢复
注意:

  • 如果服务器开启了AOF持久化功能,那么服务器会优先使用AOF日志来还原数据库状态
  • 只有在AOF持久化功能关闭的状态下,服务器才会使用RDB文件来还原数据库状态

参考文章

posted @   秋天Code  阅读(25)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示