Redis的redis.conf是控制服务端行为的核心文本,所有启动参数都能在此固定,避免每次靠命令行散落配置。理解文件中每一项的含义,是做稳定缓存和持久化存储的前提。很多人直接拿默认文件上线,结果在内存占用、连接数、落盘频率上接连出问题,所以有必要逐块拆开说明。

内存管理相关配置与陷阱
在redis.conf中,maxmemory用来限制Redis能使用的最大物理内存。如果不设置,在64位系统上Redis会一直分配直到被操作系统OOM killer终止。生产环境必须显式写上例如maxmemory 6gb,并为maxmemory-policy选择淘汰策略。常见的allkeys-lru会在满内存时按最近最少使用删键,适合纯缓存;若混存重要数据则应选volatile-lru且仅对带过期时间的键淘汰。
另一个容易误解的参数是maxmemory-samples,它决定LRU近似算法随机取几个样本对比,默认5。调大能提升淘汰精准度但耗CPU。下面代码展示一段典型的配置片段:
# 限制最大内存为6GB maxmemory 6gb # 内存不足时淘汰最近最少使用的键 maxmemory-policy allkeys-lru # 提升LRU采样精度 maxmemory-samples 10
除了上述项,hash-max-ziplist-entries与hash-max-ziplist-value控制小哈希是否用紧凑编码。当字段数少于设定值且值小于阈值,Redis用 ziplist 存,省内存但操作变慢。若业务哈希较大,应调高或关闭以换性能。这些细节在配置文件里都有注释,但默认值未必契合你的数据特征。
网络与连接安全配置
bind指令限定Redis监听的网卡地址,默认只绑127.0.0.1。若需内网访问应写bind 127.0.0.1 192.168.0.1这类具体IP,不要直接删掉bind暴露全部网卡。配合protected-mode yes时,未设密码又没绑公网会被拒绝外部连接,这是安全兜底。生产环境还应通过requirepass设强密码,避免未授权访问。
timeout控制空闲连接多少秒后断开,默认0表示不断。高并发短连接场景设timeout 300可释放僵尸连接。与此同时tcp-keepalive默认300秒发探测包,确保代理后连接存活。以下示例展示网络段基础配置:
# 仅允许本机和内网特定IP bind 127.0.0.1 192.168.0.1 protected-mode yes requirepass YourStrongPass timeout 300 tcp-keepalive 300
还需要注意maxclients,它限制同时连接数,默认10000。若系统ulimit偏小,Redis启动时会按min(maxclients, 内核限制)生效。遇到连接爆满报错,先改系统文件描述符上限再调此值。错误做法是在配置里写很大却不去改操作系统,那样只是自欺欺人。
持久化机制与性能权衡
redis.conf提供RDB和AOF两种持久化开关。save 900 1表示900秒内有1次修改就快照,可配多行。RDB文件小、恢复快,但可能丢最后一次快照后的数据。AOF由appendonly yes开启,appendfsync everysec每秒刷盘,兼顾安全与性能。若用always则每条命令刷盘,极慢但最稳。
在写盘策略上,no-appendfsync-on-rewrite设为yes可避免AOF重写时和正常刷盘抢磁盘IO,降低延迟抖动。此外auto-aof-rewrite-percentage 100与auto-aof-rewrite-min-size 64mb控制重写触发条件。示例配置如下:
save 900 1 save 300 10 appendonly yes appendfsync everysec no-appendfsync-on-rewrite yes auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb
很多团队为求安全同时开RDB和AOF,这完全可行,只是占用双倍IO。如果容忍分钟级丢失,可关AOF只留RDB并调密save频率。配置没有绝对最优,只有匹配业务。读懂redis.conf每一行的注释与默认值,才能根据监控指标反向调优,而不是出了问题才翻文档。
Redisredis.conf配置调优修改时间:2026-08-17 13:12:16