Skip to content

Redis - 配置

Redis 的配置方式主要有两种:通过编辑 redis.conf 文件进行持久化设置,或者使用 CONFIG 命令在运行时修改配置。redis.conf 文件注释非常详细,是所有可用指令的极佳文档。

你可以直接通过客户端使用 CONFIG GET 命令来检查当前服务器配置。

> CONFIG GET <parameter>

要检索 loglevel 参数的值:

127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"

你可以使用 glob 风格的模式来获取所有配置参数。使用 * 将返回所有内容。

127.0.0.1:6379> CONFIG GET *

注意:输出内容会非常庞大,列出你的 Redis 版本支持的所有指令。通常更实用的是查询特定组的参数,例如 CONFIG GET *memory*。

对于在服务器重启后仍然有效的持久化更改,你应该编辑 redis.conf 文件。对于临时的、即时生效的更改,请使用 CONFIG SET 命令。

> CONFIG SET <parameter> <value>
127.0.0.1:6379> CONFIG SET maxmemory "2gb"
OK
127.0.0.1:6379> CONFIG GET maxmemory
1) "maxmemory"
2) "2147483648"

要使运行时更改持久化,你可以使用 CONFIG REWRITE 命令,它将以原子方式使用当前内存中的配置更新你的 redis.conf 文件。这要求服务器最初是使用配置文件启动的。

虽然 Redis 有超过 100 个配置指令,但这里列出了一些你应该熟悉的最重要指令。

  • requirepass <password>: 设置密码,客户端必须使用 AUTH 命令进行认证。这是你的 Redis 实例的第一道防线。
  • protected-mode yes: 一个关键的安全层。启用时(默认情况下),Redis 仅接受来自环回接口 (127.0.0.1) 的连接,除非设置了密码或明确配置了 bind 指令。这可以防止不安全的 Redis 意外暴露在互联网上。
  • bind 127.0.0.1 -::1: 将服务器绑定到特定的网络接口。默认绑定到 IPv4 和 IPv6 的本地主机 (localhost)。要使 Redis 可以从其他服务器访问,你需要将其更改为 bind <private_ip_address> 或 bind 0.0.0.0(谨慎使用并配合防火墙)。
  • save <seconds> <changes>: 配置 RDB 快照。例如,save 60 1000 告诉 Redis 如果在过去 60 秒内至少有 1000 个键发生更改,则将数据集保存到磁盘。
  • appendonly yes: 启用追加只写文件 (AOF) 持久化。与快照不同,Redis 记录每个写操作。这比 RDB 提供更好的持久性,但可能导致更大的持久化文件。
  • maxmemory <bytes>: 设置 Redis 可使用内存的上限。当达到此限制时,Redis 将开始基于配置的策略淘汰键。
  • maxmemory-policy <policy>: 定义淘汰策略。常见值包括 allkeys-lru(淘汰最近最少使用的键)、volatile-lru(淘汰带有过期时间设置的最近最少使用的键)和 noeviction(当内存满时,写命令返回错误)。