[Redis] 浅谈RDB 持久化

2020-12-08  本文已影响0人  Colors_boy

Redis 是内存数据库,它将自己的数据库状态存储在内存里面,所以一旦服务器关闭或者宕机,服务器中的数据库状态也会消失不见。因此,Redis 提供了两种持久化功能,其中 RDB 持久化功能是将数据库状态保存到磁盘里面,避免数据意外丢失。

RDB 持久化

1. RDB 文件的创建和载入

生成 RDB 文件命令:SAVE 和 BGSAVE

SAVE 命令会阻塞 Redis 服务器进程,直到 RDB 文件创建完毕,在服务器进程阻塞期间,服务器不能处理任何命令请求。

redis> SAVE
ok

BGSAVE 命令会派生出一个子进程,然后又子进程负载创建 RDB 文件,服务器进程继续处理命令请求:

redis> BGSAVE
Background saving started

默认保存条件:

save 900 1

save 300 10

save 60 10000

意思为 满足以下任一条件:900秒内数据库至少修改1次、300秒内数据库至少修改10次、60秒内数据库至少修改10000次都会触发执行 BGSAVE 。

存放在服务器的 saveparams 数组上。


RDB 文件的载入工作是服务器启动时自动执行,没有专门的执行命令,重要 Redis 服务器启动时检测到 RDB 文件的存在,它就会自动载入 RDB 文件。

注意:因为 AOF 文件更新频率比 RDB 文件高,如果服务器开启 AOF 持久化功能,则会优先加载 AOF 文件,只有在 AOF 持久化功能处于关闭状态,服务器才会优先加载 RDB 文件。

image.png

2. RDB 文件结构

image.png

(全大写表示常量)

示例:

image.png

databases部分

完整的 RDB 文件结构:

image.png

SELECTDB 0 表示选择0号数据库载入数据。

pairs: 保存数据库所有的键值对,如果键值对带有过期时间,那么过期时间也会和键值对保存在一起。


回顾:

image.png
上一篇下一篇

猜你喜欢

热点阅读