Redis 配置文件常用参数解析

Redis 配置参数详解(按参数性质分类)

本文按参数性质把 Redis 常见配置项分类说明:网络与客户端、持久化、内存与淘汰、复制与高可用、日志与监控、性能/线程/IO、安全与访问控制、其他(数据库、模块等)
(注:Redis 的 redis.conf 随版本更新,具体条目请以你部署的版本自带 redis.conf 为准;本文引用官方文档作为常识参考。)


目录


一、如何修改配置(方式与优先级)

  1. 文件方式(静态) — 编辑 redis.conf(通常 /etc/redis/redis.conf 或源码目录下)并重启 redis-server。这是最常用、最“持久”的方式。
  2. 命令行启动覆盖 — 启动时通过 redis-server /path/to/redis.conf --port 6380 --maxmemory 1gb 等形式覆盖(命令行格式与 redis.conf 同名但前置 --)。适用于测试/容器启动。
  3. 运行时修改(临时) — 使用 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.rdbdir /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-lruallkeys-lruvolatile-lfuallkeys-lfuvolatile-ttlvolatile-randomallkeys-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/nocluster-config-file nodes.confcluster-node-timeout 等。集群模式需按官方 Cluster 部署文档操作(多实例与网络要求)。官方示例配置文件涵盖这些项。:contentReference[oaicite:13]{index=13}

六、日志、慢查询与监控

logfile / loglevel

  • 含义:日志文件路径与日志等级(debug/verbose/notice/warning)。
  • 示例logfile /var/log/redis/redis-server.logloglevel 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

  • 含义:重命名危险命令(如 FLUSHALLCONFIG)或禁用(重命名为空字符串),以减少误操作/滥用风险。

防火墙 / 网络层面

  • 即便配置了密码与 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、内存、持久化需求与安全)调整。


附:常见运维注意与最佳实践(总结)

  1. 区分缓存与持久化实例:若 Redis 仅作缓存,通常开启 maxmemory + allkeys-lru;若作主数据存储,使用 noeviction 并开启 AOF(appendfsync everysec 或更强策略),并保证持久化目录 I/O 性能与备份策略。([Redis][2])
  2. 谨慎运行时改配置CONFIG SET 可在线修改,但要结合 CONFIG REWRITE 保持持久化,且某些参数不可在运行时修改(以官方 redis.conf 注释为准)。([Redis][3])
  3. 监控内存/慢查询/IO:定期查看 INFO 输出、慢查询日志、AOF/RDB 重写频率,提前预警。
  4. 备份策略:即便开启 AOF/RDB,也应有异地备份(快照/对象存储)、以及演练恢复流程。
  5. 测试变更:修改 maxmemory-policy、AOF 策略、IO 线程等在生产前要在压力环境验证性能与数据可靠性。
  6. 访问控制:生产强制启用 ACL、IP 白名单或网络层防火墙,避免明文暴露到公网。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光芒万丈向远方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值