引言

Redis 是一个开源的、内存中的键值数据存储。 Redis 有几个命令,允许您动态地更改 Redis 服务器的配置设置。 本教程将介绍其中的一些命令,并解释如何使这些配置更改永久化。

如何使用本指南

本指南是作为包含自包含示例的备忘单编写的。 我们鼓励您跳转到任何与您正在尝试完成的任务相关的部分。

本指南中显示的命令是在运行 Redis 4.0.9版本的 Ubuntu 18.04服务器上测试的。 要建立一个类似的环境,你可以按照我们关于如何在 Ubuntu 18.04上安装和保护 Redis 的指南的第一步。 我们将通过使用 Redis-cli (Redis 命令行界面)运行这些命令来演示它们的行为。 请注意,如果您使用的是不同的 Redis 接口ーー例如 Redli ーー某些命令的确切输出可能会有所不同。

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

改变雷迪斯的配置

本节中列出的命令只会在当前会话期间或直到运行配置重写时才会更改 Redis 服务器的行为。 通过使用首选的文本编辑器打开并编辑 Redis 配置文件,可以直接更改该文件。 例如,你可以使用 nano 来实现:

  • sudo nano /etc/redis/redis.conf
警告: config set 命令被视为危险。 通过更改 Redis 配置文件,可能会导致 Redis 服务器以意想不到的或不希望看到的方式工作。 我们建议您只运行 config set 命令,如果您正在测试它的行为,或者您绝对确定要对 Redis 配置进行更改。 将这个命令重命名为一个意外运行可能性较低的命令可能符合您的利益。

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

  • config set parameter value

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

  • config set "dbfilename" "new_file.rdb"

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

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

使配置变更永久化

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

  • config rewrite

该命令尽可能保留原始 redis.conf 文件的注释和总体结构,只进行最小的更改以匹配服务器当前使用的设置。

像配置集一样,如果重写成功,配置重写将返回 OK。

检查 Redis 的配置

若要读取 Redis 服务器的当前配置参数,请运行 config get 命令。 Config get 只有一个参数,可以是 redis.conf 中使用的参数的精确匹配,也可以是 glob 模式。 例如:

  • config get repl*

根据你的 Redis 配置,这个命令可能返回:

Output
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 命令。 如果还有其他相关的命令、参数或者程序你想在本指南中看到,请在下面的评论中询问或者提出建议。

有关 Redis 命令的更多信息,请参见我们关于如何管理 Redis 数据库的系列教程。