Redis 的 RDB(Redis Database Backup)快照是一种数据持久化方式,它可以在指定时间间隔内将内存中的数据快照保存到磁盘。这样,即使Redis服务器意外宕机或重启,数据也能从最近的快照中恢复。RDB快照的配置主要涉及以下几个方面:
1. RDB 文件的保存路径
dir
: 指定 RDB 文件保存的目录。默认情况下,Redis 会将生成的 RDB 文件存储在配置文件中的dir
路径下。
dir /var/lib/redis
2. RDB 文件名
dbfilename
: 指定 RDB 文件的名称,默认名称是dump.rdb
。你可以根据需要修改文件名。
dbfilename dump.rdb
3. 快照策略配置
Redis 通过 save
命令配置 RDB 快照的触发条件。save
后面跟的是两个参数:第一个参数是时间(秒),第二个参数是命令的数量。即,当某个时间段内发生了一定数量的写操作时,会触发快照保存。
默认配置示例:
save 900 1 # 900秒(15分钟)内至少有1次写操作
save 300 10 # 300秒(5分钟)内至少有10次写操作
save 60 10000 # 60秒(1分钟)内至少有10000次写操作
可以通过增加或减少 save
指令来调整保存策略,也可以全部注释掉 save
行来禁用RDB持久化。
4. RDB 快照的压缩
rdbcompression
: 默认情况下,Redis 使用 LZF 算法对 RDB 文件进行压缩,节省磁盘空间。如果不需要压缩(例如为了减少 CPU 使用),可以将该选项设置为no
。
rdbcompression yes
5. RDB 文件的校验
rdbchecksum
: 在保存 RDB 文件时,Redis 默认会在文件末尾写入一个校验和,以确保数据的完整性。如果希望禁用校验(例如为了减少 I/O 操作),可以将该选项设置为no
。
rdbchecksum yes
6. 在主从复制场景中的 RDB 配置
slave-serve-stale-data
: 当从节点断开与主节点的连接时,它可以继续提供数据服务(已失效的数据)。将slave-serve-stale-data
设置为yes
(默认值)允许这种行为,设置为no
则不允许。slave-read-only
: 指定从节点是否为只读模式。设置为yes
(默认)表示从节点不允许写入数据。
7. 启动时载入RDB文件
Redis 在启动时会自动加载RDB文件,如果RDB文件损坏或者不存在,Redis会显示错误信息。如果使用了AOF持久化模式,且AOF文件存在并且比RDB文件更新,Redis会优先加载AOF文件。
8. 手动触发RDB快照
可以使用 SAVE
或 BGSAVE
命令来手动触发RDB快照。
SAVE
:阻塞Redis服务器直到快照完成。BGSAVE
:在后台异步执行快照,不会阻塞服务器。
SAVE BGSAVE
小结
通过正确配置Redis的RDB快照策略,可以确保数据在发生故障时能够尽可能快速、安全地恢复。根据实际业务场景,合理选择保存策略和持久化方式,既能保证数据安全,又能提升Redis的性能。