RDB机制

RDB机制

RDB机制是以指定的时间间隔将Redis中的数据生成快照并保存到硬盘中,它更适合于定时备份数据的应用场景。可以通过手动或者自动的方式来触发RDB机制:

2.1手动触发

可以通过以下两种方式来手动触发RDB机制:

  • savesave命令会阻塞当前Redis服务,直到RDB备份过程完成,在这个时间内,客户端的所有查询都会被阻塞;
  • bgsaveRedis进程会fork出一个子进程,阻塞只会发生在fork阶段,之后持久化的操作则由子进程来完成。

2.2自动触发

除了手动使用命令触发外,在某些场景下也会自动触发RedisRDB机制:

  • redis.conf 中配置了 save m n ,表示如果在m秒内存在了n次修改操作时,则自动触发bgsave;
  • 如果从节点执行全量复制操作,则主节点自动执行 bgsave,并将生成的RDB文件发送给从节点;
  • 执行 debug reload 命令重新加载Redis时,会触发 save 操作;
  • 执行 shutdown 命令时候,如果没有启用AOF持久化则默认采用 bgsave 进行持久化。

2.3相关配置

1.文件目录

RDB文件默认保存在Redis的工作目录下,默认文件名为 dump.rdb,可以通过静态或动态方式修改:

  • 静态配置:通过修改 redis.conf 中的工作目录 dir 和数据库存储文件名 dbfilename 两个配置;

  • 动态修改:通过在命令行中执行以下命令:

    config set dir{newDir}
    config set dbfilename{newFileName}
    

2.压缩算法

Redis默认采用LZF算法对生成的RDB文件做压缩处理, 这样可以减少占用空间和网络传输的数据量,但是压缩过程会耗费CPU的计算资源, 你可以按照实际情况,选择是否启用。可以通过修改 redis.conf 中的 rdbcompression 配置或使用以下命令来进行动态修改:

config set rdbcompression{yes|no}
上一页