Redis 配置详解
Redis 配置建议按实例独立维护,例如 /data/redis/6379/conf/redis.conf。生产配置需要结合实例角色、内存容量、持久化策略和客户端访问方式调整。
网络配置
bind 0.0.0.0
port 6379
protected-mode yes
tcp-backlog 1024
timeout 0
tcp-keepalive 300
| 参数 | 说明 |
|---|---|
bind | 监听地址。生产环境更推荐绑定内网 IP |
port | Redis 监听端口 |
protected-mode | 保护模式,未设置密码时避免被外部访问 |
tcp-backlog | TCP 等待队列长度,需要配合 net.core.somaxconn |
timeout | 空闲连接关闭时间,0 表示不主动关闭 |
tcp-keepalive | TCP keepalive 检测间隔 |
安全配置
requirepass change-me
masterauth change-me
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
生产环境至少需要设置密码、限制来源地址、避免公网暴露。危险命令可以禁用或改名,但更推荐通过网络隔离和权限控制减少误操作风险。
Redis 6+ 可以使用 ACL 管理账号:
user default off
user app on >app-password ~app:* +@read +@write -@dangerous
内存配置
maxmemory 8gb
maxmemory-policy allkeys-lru
maxmemory-samples 5
常见淘汰策略:
| 策略 | 说明 |
|---|---|
noeviction | 内存不足时报错,不淘汰 key |
allkeys-lru | 从所有 key 中淘汰最近最少使用的数据 |
volatile-lru | 从设置了过期时间的 key 中淘汰最近最少使用的数据 |
allkeys-lfu | 从所有 key 中淘汰低频访问数据 |
volatile-ttl | 优先淘汰剩余 TTL 更短的 key |
allkeys-random | 从所有 key 中随机淘汰 |
缓存实例常用 allkeys-lru 或 allkeys-lfu,业务强一致数据不建议依赖淘汰策略保护容量。
持久化配置
save 900 1
save 300 10
save 60 10000
appendonly yes
appenddirname appendonlydir
appendfsync everysec
no-appendfsync-on-rewrite no
aof-use-rdb-preamble yes
| 参数 | 说明 |
|---|---|
save | RDB 自动快照触发条件 |
appendonly | 是否启用 AOF |
appendfsync | AOF 刷盘策略,常用 everysec |
no-appendfsync-on-rewrite | AOF rewrite 时是否暂停 fsync |
aof-use-rdb-preamble | AOF 重写后使用 RDB 前缀,恢复更快 |
如果 Redis 只作为可丢失缓存,可以关闭持久化;如果承担会话、队列、锁状态以外的重要数据,需要明确恢复目标和备份策略。
日志和慢查询
loglevel notice
logfile /data/redis/6379/logs/redis.log
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 100
| 参数 | 说明 |
|---|---|
slowlog-log-slower-than | 慢查询阈值,单位微秒 |
slowlog-max-len | 慢查询保留条数 |
latency-monitor-threshold | 延迟监控阈值,单位毫秒 |
常用检查命令:
redis-cli -a "$REDIS_PASSWORD" slowlog get 10
redis-cli -a "$REDIS_PASSWORD" latency latest
redis-cli -a "$REDIS_PASSWORD" latency doctor
客户端连接
maxclients 10000
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
maxclients 需要小于系统文件句柄限制。客户端连接数异常升高时,先检查连接池配置、短连接风暴和慢命令阻塞。
主从复制配置
replicaof 10.0.0.11 6379
masterauth change-me
replica-read-only yes
repl-diskless-sync yes
repl-backlog-size 256mb
repl-backlog-size 影响断线后部分同步的成功率。网络不稳定或写入量较高时,应适当增大 backlog。
Cluster 配置
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
cluster-require-full-coverage yes
Cluster 实例需要确保 cluster-config-file 在实例目录下唯一,不能多个实例共用同一个文件。