学习

正如我们在上一单元中学到的,如果至少一个键发生了变化,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 命令,您将看到所有您创建的键仍然在数据库中,即使我们重新启动了进程。