一、redis.conf 是什么?
Redis 的配置文件(默认命名为 redis.conf
,Redis 8.0 之后改为 redis-full.conf
)控制着服务运行的各项参数。该文件采用以下结构:
指令名 参数1 参数2 ... 参数N
例如:
replicaof 127.0.0.1 6380
requirepass "hello world"
- 支持双引号或单引号包裹字符串;
- 双引号可使用
\xFF
形式表示 ASCII 十六进制字符; - 单引号中可使用反斜线转义。
提示: Redis 的官方包中都附带了自说明的 redis.conf 配置文件,建议初学者深入阅读。
二、命令行方式传参(适用于测试)
除了配置文件,还可以通过命令行直接传递配置参数,非常适合临时测试。例如:
./redis-server --port 6380 --replicaof 127.0.0.1 6379
这会启动一个新的 Redis 实例,监听 6380 端口,作为 6379 的副本。
命令行参数格式与配置文件一致,区别在于命令行前缀多了 --
。
注意:Redis 内部会自动构建一个临时配置文件(或在已有配置上追加),不会影响原始配置文件。
三、运行时动态修改配置(不重启服务)
Redis 提供了运行时修改配置的能力,通过 CONFIG
命令可实现动态读取与设置参数:
示例:
CONFIG GET maxmemory
CONFIG SET maxmemory 512mb
不过需要注意:
- 不是所有参数都支持动态修改;
- 修改不会同步写入 redis.conf 文件,下一次重启将恢复原值;
- 若想将内存配置持久化,可执行:
CONFIG REWRITE
该命令将自动更新配置文件中与当前配置值不符的项,保留原有注释。
四、Redis 配置文件常用项说明(精选)
配置项 | 说明 |
---|---|
port | 设置监听端口,默认 6379 |
bind | 限定绑定的 IP 地址,常见设为 127.0.0.1 |
requirepass | 设置密码,启用身份验证(已被 ACL 替代) |
aclfile | 指定 ACL 用户配置文件 |
appendonly | 启用 AOF 持久化 |
dir | 持久化文件写入目录 |
save | 快照保存策略,如 save 900 1 |
maxmemory | 限制最大内存使用量 |
maxmemory-policy | 内存淘汰策略,如 allkeys-lru |
logfile | 日志文件路径 |
daemonize | 是否后台运行(true/false) |
五、Redis 作为缓存的配置建议
Redis 常被用作缓存系统,如需模拟 Memcached 行为,可使用以下配置:
maxmemory 2mb
maxmemory-policy allkeys-lru
此模式下,Redis 会自动在内存满时根据 近似 LRU 算法 淘汰所有 key,而无需程序手动设置 EXPIRE
。
淘汰策略常见选项:
noeviction
:不淘汰,返回错误allkeys-lru
:基于访问时间淘汰任意 keyvolatile-lru
:只淘汰设置过expire
的 keyallkeys-random
:随机淘汰任意 key
六、版本变化提示(redis.conf vs redis-full.conf)
- Redis 8.0 开始,配置文件名改为
redis-full.conf
,文件更完整,包含全部默认配置; - 旧版本依然使用
redis.conf
; - 官方 GitHub 仓库中提供了每个版本对应的配置样例,便于对比变化:
例如:
- Redis 7.4:
redis.conf
- Redis 8.0:
redis-full.conf
七、总结:Redis 配置文件使用建议
场景 | 建议配置方式 |
---|---|
开发/调试 | 命令行或简化配置文件 |
测试/演示 | 精简配置 + CONFIG SET |
生产部署 | 使用完整 redis.conf,禁用 CONFIG 命令 |
高并发缓存系统 | 配置 maxmemory + LRU 淘汰策略 |
ACL 用户权限细分 | 启用 aclfile 管理账户 |
TLS/加密传输 | 使用 tls-* 系列配置项 |
配置热更新 | 搭配 CONFIG REWRITE 持久化变更 |