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