源地址:https://www.digitalocean.com/community/cheatsheets/how-to-change-redis-configuration
作者:Mark Drake

简介

Redis 是一个开源的、运行在内存中的键值数据库。 Redis 有几个命令可让您即时更改 Redis 服务器的配置设置。本教程将介绍其中一些命令,并解释如何使这些配置更改永久化。

如何使用这个教程

这个教程是以小抄(Cheat Sheet)的形式写的,有对应的例子。我们鼓励你直接跳转到和你要完成的任务相关的章节进行阅读。

这个教程中的命令在 Ubuntu 18.04 中的 Redis 4.0.9 版本完成测试。如果你需要建设一个同样的环境,可以参考我们的 如何在 Ubuntu 18.04 上安装并加固 Redis 中的 Step 1 来安装 Redis。我们将通过 Redis 命令行界面redis-cli运行这些命令,来演示这些命令的行为。请注意,如果你使用不同的 Redis 工具--例如Redli —— 某些命令的实际输出可能有所不同。

请注意,代管的 Redis 数据库通常不允许用户更改配置文件。如果您使用 DigitalOcean 的代管数据库,本指南中使用的命令将导致错误。

修改 Redis 的配置

本节中概述的命令只会在当前会话期间改变 Redis 服务器的行为,或者直到您运行 config rewrite 这将使它们永久化。您可以通过使用默认文本编辑器打开和编辑 Redis 配置文件来直接更改这些配置。例如,您可以使用 nano 来执行此操作:

$  sudo nano /etc/redis/redis.conf

警告: config set 命令是非常危险的。修改你的 Redis 配置文件可能会导致 Redis 服务器出现意外或以无法预期的行为来运行。建议你只在测试环境或明确知道自己需要修改配置时使用 config set命令。

出于安全考虑,你可以选择将这些命令重命名为不容易被意外运行的命令。

config set 允许您在运行时重新配置 Redis,而无需重新启动服务。它使用以下语法:

127.0.0.1:6379>  config set parameter value

例如,如果您想更改 Redis 在运行 save 命令后将生成的数据库转储文件的名称,则可以运行如下命令:

127.0.0.1:6379>  config set "dbfilename" "new_file.rdb"

如果配置更改有效,该命令将返回 OK。否则会返回错误。

注意: 并非 redis.conf 文件中的每个参数都可以通过 config set 操作进行更改。例如,您不能更改 requirepass 参数定义的身份验证密码。

将配置修改持久化

config set 不会永久改变 Redis 实例的配置文件;它只会改变 Redis 在运行时的行为。要在运行 config-set 命令后编辑 redis.conf 并使当前会话的配置永久化,请运行 config rewrite

127.0.0.1:6379>  config rewrite

此命令尽最大努力保留原始 redis.conf 文件的注释和整体结构,只需进行少量更改以匹配服务器当前使用的设置。

config set 一样,如果重写成功,config rewrite 会返回 OK

检查 Redis 的配置

要读取 Redis 服务器的当前配置参数,请运行 config get 命令。 config get 接受一个参数,它可以是 redis.conf 中使用的参数的完全匹配,也可以是 glob 模式 . 例如:

127.0.0.1:6379>  config get repl*

根据您的 Redis 配置,此命令可能会返回:

输出

1) "repl-ping-slave-period"
2) "10"
3) "repl-timeout"
4) "60"
5) "repl-backlog-size"
6) "1048576"
7) "repl-backlog-ttl"
8) "3600"
9) "repl-diskless-sync-delay"
10) "5"
11) "repl-disable-tcp-nodelay"
12) "no"
13) "repl-diskless-sync"
14) "no"

您还可以通过运行 config get * 返回 config set 支持的所有配置参数。

总结

本指南详细介绍了用于动态更改 Redis 服务器配置文件的 redis-cli 命令。