写点什么

Redis 持久化方案介绍之 RDB 方案

发布于: 2021 年 04 月 20 日
Redis持久化方案介绍之RDB方案

RDB 方案介绍


Redis 会定期保存数据快照至一个 rdb 文件中,并在启动时自动加载 rdb 文件,恢复之前保存的数据。可以在配置文件中配置 Redis 进行快照保存的时机:


save [seconds][changes]


意为在[seconds]秒内如果发生了[changes]次数据修改,则进行一次 RDB 快照保存,例如


save 60 100


会让 Redis 每 60 秒检查一次数据变更情况,如果发生了 100 次或以上的数据变更,则进行 RDB 快照保存。可以配置多条 save 指令,让 Redis 执行多级的快照保存策略。Redis 默认开启 RDB 快照。也可以通过 SAVE 或者 BGSAVE 命令手动触发 RDB 快照保存。


SAVE 和 BGSAVE 两个命令都会调用 rdbSave 函数,但它们调用的方式各有不同:


  •  SAVE 直接调用 rdbSave ,阻塞 Redis 主进程,直到保存完成为止。在主进程阻塞期间,服务器不能处理客户端的任何请求。


  •  BGSAVE 则 fork 出一个子进程,子进程负责调用 rdbSave ,并在保存完成之后向主进程发送信号,通知保存已完成。 Redis 服务器在 BGSAVE 执行期间仍然可以继续处理客户端的请求。

RDB 方案优点


1、对性能影响最小。如前文所述,Redis 在保存 RDB 快照时会 fork 出子进程进行,几乎不影响 Redis 处理客户端请求的效率。

 

2、每次快照会生成一个完整的数据快照文件,所以可以辅以其他手段保存多个时间点的快照(例如把每天 0 点的快照备份至其他存储媒介中),作为非常可靠的灾难恢复手段。

 

3、使用 RDB 文件进行数据恢复比使用 AOF 要快很多

RDB 方案缺点


1、快照是定期生成的,所以在 Redis crash 时或多或少会丢失一部分数据。

 

2、如果数据集非常大且 CPU 不够强(比如单核 CPU),Redis 在 fork 子进程时可能会消耗相对较长的时间,影响 Redis 对外提供服务的能力。

RDB 方案配置

修改 redis 的配置文件

cd /export/servers/redis-3.2.8/vim redis.confsave 900 1save 300 10save 60 10000save 5 1
复制代码



重新启动 redis 服务

每次生成新的 dump.rdb 都会覆盖掉之前的老的快照

ps -ef | grep rediskill -9 69632 74217src/redis-server redis.conf
复制代码


root      69632      1  0 11:07 ?        00:00:55 redis-server 192.168.52.100:6379
复制代码


发布于: 2021 年 04 月 20 日阅读数: 20
用户头像

还未添加个人签名 2021.03.07 加入

还未添加个人简介

评论

发布
暂无评论
Redis持久化方案介绍之RDB方案