Redis 配置参数详解(按参数性质分类)
本文按参数性质把 Redis 常见配置项分类说明:网络与客户端、持久化、内存与淘汰、复制与高可用、日志与监控、性能/线程/IO、安全与访问控制、其他(数据库、模块等)。
(注:Redis 的 redis.conf 随版本更新,具体条目请以你部署的版本自带 redis.conf 为准;本文引用官方文档作为常识参考。)
目录
- 一、如何修改配置(方式与优先级)
- 二、网络与客户端相关
- 三、持久化(RDB / AOF)相关
- 四、内存限制与淘汰策略
- 五、复制、主从与集群相关
- 六、日志、慢查询与监控
- 七、性能与线程调优
- 八、安全与访问控制
- 九、数据库、键空间与模块化配置
- 十、实用示例:常见生产
redis.conf片段 - 附:常见运维注意与最佳实践
一、如何修改配置(方式与优先级)
- 文件方式(静态) — 编辑
redis.conf(通常/etc/redis/redis.conf或源码目录下)并重启redis-server。这是最常用、最“持久”的方式。 - 命令行启动覆盖 — 启动时通过
redis-server /path/to/redis.conf --port 6380 --maxmemory 1gb等形式覆盖(命令行格式与redis.conf同名但前置--)。适用于测试/容器启动。 - 运行时修改(临时) — 使用
CONFIG SET <param> <value>,无需重启即可生效(但不会持久写回配置文件)。若想把当前运行时配置持久化到redis.conf,可执行CONFIG REWRITE。运行时改动要慎重。
二、网络与客户端相关
bind
- 含义:服务器监听的 IP 地址(可多值)。
- 示例:
bind 127.0.0.1 ::1。 - 如何配置:在
redis.conf中直接设置;也可以通过命令行--bind覆盖。 - 注意:生产环境通常绑定内网或指定接口,避免
0.0.0.0直接暴露公网。
port
- 含义:Redis 监听端口,默认
6379。 - 示例:
port 6379。
protected-mode
- 含义:保护模式(默认 on),在无
bind或无requirepass时拒绝外网写入。 - 注意:部署到可信网络时可关闭,但务必做好防火墙与认证。
tcp-backlog
- 含义:内核 backlog 队列长度(未完成连接队列)。
- 示例:
tcp-backlog 511。 - 注意:在高并发连接场景中可调大,但受操作系统限制(
/proc/sys/net/core/somaxconn)。
timeout / tcp-keepalive
- 含义:空闲客户端超时时间(秒)与 TCP keepalive。
- 建议:对长连接服务谨慎设置,避免连接被过早断开。
maxclients
- 含义:允许的最大客户端连接数。达上限将拒绝新连接。
- 示例:
maxclients 10000。 - 注意:设置前确保操作系统文件句柄(ulimit -n)足够。
三、持久化(RDB / AOF)相关(核心)
Redis 支持 RDB(快照) 与 AOF(Append Only File) 两种持久化;可单独或同时开启,权衡为性能 vs 持久化强度。官方持久化说明详见文档。:contentReference[oaicite:8]{index=8}
save(RDB 快照策略)
- 含义:RDB 自动保存触发条件(秒,改动次数)。
- 示例:
save 900 1(900 秒内至少 1 次写操作则触发一次快照)。 - 配置方法:在
redis.conf指定多行save条目;删除所有save可关闭 RDB 自动快照。
dbfilename / dir
- 含义:RDB 文件名(默认
dump.rdb)与持久化目录。 - 示例:
dbfilename dump.rdb、dir /var/lib/redis。
appendonly(AOF 开启)
- 含义:是否启用 AOF(
yes/no)。开启后 Redis 将把写命令追加到 AOF 文件,提高持久化粒度但增加 IO。 - 示例:
appendonly yes。 - 注意:AOF 文件可配置
appendfsync策略来权衡性能与数据安全(always,everysec,no)。:contentReference[oaicite:9]{index=9}
appendfsync
- 含义:AOF 写入刷盘策略:
always:每次写都 fsync(最安全,最慢)everysec:每秒 fsync(常用折中)no:依赖操作系统(最快但最不安全)
- 建议:生产常用
everysec。
no-appendfsync-on-rewrite
- 含义:AOF 重写时是否禁止 fsync(可减少抖动)。
stop-writes-on-bgsave-error
- 含义:当后台持久化(RDB/AOF 重写)失败时是否停止写入(保护数据不丢失),默认
yes推荐开启。
四、内存限制与淘汰策略(缓存场景关键)
maxmemory
- 含义:Redis 允许使用的最大内存(字节或单位,如
512mb)。达到后触发淘汰或写错误,取决于maxmemory-policy。 - 配置:
maxmemory 2gb。 - 注意:
maxmemory不是一个绝对硬限制(短时内内存可能超出),但会触发淘汰或拒写机制。:contentReference[oaicite:10]{index=10}
maxmemory-policy(淘汰策略)
- 含义:当内存到达
maxmemory后的行为策略。常见值:noeviction(默认,拒写)、volatile-lru、allkeys-lru、volatile-lfu、allkeys-lfu、volatile-ttl、volatile-random、allkeys-random等。选择要基于业务缓存/持久化需求。:contentReference[oaicite:11]{index=11} - 建议:缓存型应用通常使用
allkeys-lru/allkeys-lfu;需要严格持久化的数据库型实例使用noeviction并设置监控与告警。
maxmemory-samples
- 含义:LRU/LFU 近似算法的采样数量,采样越多精度越高但成本更大。
五、复制(主从)、高可用与集群
replicaof(旧名 slaveof)
- 含义:配置为某个主节点的副本(replica)。格式:
replicaof 10.0.0.1 6379。 - 注意:Replica 默认跟随主节点的指令流;某些参数在 replica 模式下不生效或由主控(例如淘汰行为可能由主节点控制)。:contentReference[oaicite:12]{index=12}
requirepass / masterauth
- 含义:实例认证密码(客户端认证)与复制时主对副的认证。
requirepass用于客户端连接,masterauth在 replica 连接主时使用。 - 注意:密码使用强随机值并配合 ACL(Redis 6+)更安全。
Cluster(分片)相关
- 常见项:
cluster-enabled yes/no、cluster-config-file nodes.conf、cluster-node-timeout等。集群模式需按官方 Cluster 部署文档操作(多实例与网络要求)。官方示例配置文件涵盖这些项。:contentReference[oaicite:13]{index=13}
六、日志、慢查询与监控
logfile / loglevel
- 含义:日志文件路径与日志等级(
debug/verbose/notice/warning)。 - 示例:
logfile /var/log/redis/redis-server.log、loglevel notice。
slowlog-log-slower-than / slowlog-max-len
- 含义:慢查询阈值(微秒)与慢查询记录长度。
- 使用:用于定位慢命令 & 性能问题。
notify-keyspace-events
- 含义:开启键空间事件通知,按字母组合(例如
Ex表示过期事件 + keyspace notifications)。 - 注意:事件通知会增加额外开销,只在需要时打开(如实现缓存一致性或监听)。
七、性能与线程调优
hz
- 含义:Redis 后台调度器频率(默认 10);影响过期、惰性删除等定时任务的响应速度。
- 注意:提高
hz可让过期更及时,但消耗更多 CPU。
io-threads / io-threads-do-reads(从 Redis 6、7 的线程化特性)
- 含义:用于开启 I/O 线程以加速网络读写/解析(只在特定场景有效)。某些选项为启动时设置且与 SSL/模块兼容性有关。
- 注意:并非所有部署场景都能从多线程中获益(需测试)。:contentReference[oaicite:14]{index=14}
stop-writes-on-bgsave-error
- 含义:当后端持久化失败时是否停止写操作以防数据丢失(通常
yes)。
八、安全与访问控制
requirepass(简易密码)与 ACL(Redis 6+)
- 含义:
requirepass为全局单密码,Redis 6+ 引入更灵活的 ACL(用户/命令/密钥范围策略)。建议在生产使用 ACL 而不是仅靠requirepass。
rename-command
- 含义:重命名危险命令(如
FLUSHALL、CONFIG)或禁用(重命名为空字符串),以减少误操作/滥用风险。
防火墙 / 网络层面
- 即便配置了密码与 bind,仍强烈建议在网络层面(安全组/防火墙)限制访问源 IP。
九、数据库、键空间与模块化配置
databases
- 含义:Redis 的逻辑数据库数量(默认 16)。在多数生产部署中推荐只使用 DB 0 并通过 key 前缀区分。
dbfilename / dir(已在持久化章节提及)
loadmodule / module
- 含义:在
redis.conf中加载第三方模块(如redisearch,redisjson,redisbloom)。模块配置可能附带专属参数(module-specific)。:contentReference[oaicite:15]{index=15}
十、实用示例:常见生产 redis.conf 片段
################################# NETWORK ####################################
bind 127.0.0.1
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
maxclients 10000
############################### PERSISTENCE ##################################
save 900 1
save 300 10
save 60 10000
dir /var/lib/redis
dbfilename dump.rdb
# AOF
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite yes
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
stop-writes-on-bgsave-error yes
########################### MEMORY / EVICTION ################################
maxmemory 2gb
maxmemory-policy allkeys-lru
maxmemory-samples 5
############################## REPLICATION ###################################
# Example replica settings:
# replicaof 10.0.0.1 6379
# masterauth yourpassword
############################### SECURITY ####################################
requirepass "ChangeThisToAStrongPassword"
# rename-command CONFIG ""
# rename-command FLUSHALL ""
################################ MISC #######################################
databases 16
logfile /var/log/redis/redis-server.log
loglevel notice
slowlog-log-slower-than 10000
slowlog-max-len 128
注意:上例仅作参考;请按实际环境(IO、内存、持久化需求与安全)调整。
附:常见运维注意与最佳实践(总结)
- 区分缓存与持久化实例:若 Redis 仅作缓存,通常开启
maxmemory+allkeys-lru;若作主数据存储,使用noeviction并开启 AOF(appendfsync everysec或更强策略),并保证持久化目录 I/O 性能与备份策略。([Redis][2]) - 谨慎运行时改配置:
CONFIG SET可在线修改,但要结合CONFIG REWRITE保持持久化,且某些参数不可在运行时修改(以官方redis.conf注释为准)。([Redis][3]) - 监控内存/慢查询/IO:定期查看
INFO输出、慢查询日志、AOF/RDB 重写频率,提前预警。 - 备份策略:即便开启 AOF/RDB,也应有异地备份(快照/对象存储)、以及演练恢复流程。
- 测试变更:修改
maxmemory-policy、AOF 策略、IO 线程等在生产前要在压力环境验证性能与数据可靠性。 - 访问控制:生产强制启用 ACL、IP 白名单或网络层防火墙,避免明文暴露到公网。
1795

被折叠的 条评论
为什么被折叠?



