正如我们在上一单元中学到的,如果至少一个键发生了变化,Redis 将每小时保存一次数据库快照;如果至少 100 个键发生了变化,每五分钟保存一次;如果至少 10000 个键发生了变化,每 60 秒保存一次。
让我们将其更新为一个简化的假设场景,即如果 20 秒内有三个键被修改,我们就想保存一个快照。
创建一个名为 2.2 的目录,并在其中准备一个 redis.conf
文件。
$ mkdir 2.2
$ cd 2.2
$ vim redis.conf
根据上述说明, redis.conf
文件应指定用于 rdb 文件的文件名,以及一个指令,用于在 20 秒内有 3 个键被修改时触发创建快照。
dbfilename my_backup_file.rdb
save 20 3
在 2.2 目录中,启动一个 Redis 服务器 - 将您刚刚创建的 redis.conf
配置文件传递给它。
$ redis-server ./redis.conf
在单独的终端选项卡中,使用 redis-cli
创建三个随机键,一个接一个。例如
127.0.0.1:6379> SET a 1
127.0.0.1:6379> SET b 2
127.0.0.1:6379> SET c 3
在第一个终端中运行 ls
命令,列出 2.2 目录中的所有文件。有什么变化?
现在我们准备将持久化提升一个级别,设置一个 AOF
文件。修改您的 redis.conf
文件,以便服务器记录每个新的写入命令并强制将其写入磁盘。
注意!我们有一个正在运行的服务器,我们希望在不重启它的情况下应用此配置。
127.0.0.1:6379> CONFIG SET appendonly yes
127.0.0.1:6379> CONFIG SET appendfsync always
为了将这些设置持久化到 redis.conf
文件中,我们需要保存它们
127.0.0.1:6379> CONFIG REWRITE
通过 redis-cli
创建一些随机键。再次检查目录 2.2 的内容。有什么变化?
作为最后一步,重新启动 Redis 服务器进程(您可以在终端中按 Ctrl+C 停止进程并再次重新运行)。如果您运行 SCAN 0
命令,您将看到所有您创建的键仍然在数据库中,即使我们重新启动了进程。