学习

正如我们在上一单元中所学,如果至少有一个键发生更改,Redis 将每小时保存一次数据库快照,如果至少有 100 个键发生更改,则每五分钟保存一次,或者如果至少有 10000 个键发生更改,则每 60 秒保存一次。

让我们将其更新为一个简化的假设场景,我们希望在 20 秒内修改了三个键后保存快照。

步骤 1#

创建一个名为 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.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 目录中的所有文件。有什么变化?

步骤 3#

现在我们准备将持久性提升到更高的级别并设置一个 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

步骤 4#

通过 redis-cli 创建一些随机键。再次检查 2.2 目录的内容。有什么变化?

步骤 5#

作为最后一步,重新启动 Redis 服务器进程(你可以在终端中按 Ctrl+C 停止进程并再次运行它)。如果你运行 SCAN 0 命令,你会看到你创建的所有键仍然在数据库中,即使我们重新启动了进程。