Skip to content

Redis 配置参数详解

核心配置参数

基本配置

daemonize

  • 默认值:no
  • 描述:是否以守护进程方式运行Redis
  • 建议值:生产环境建议设置为yes,开发环境可以设置为no

pidfile

  • 默认值:/var/run/redis/redis-server.pid
  • 描述:Redis进程PID文件路径
  • 建议值:根据系统环境调整,确保目录存在且有写入权限

port

  • 默认值:6379
  • 描述:Redis监听的TCP端口
  • 建议值:生产环境建议修改默认端口,提高安全性

tcp-backlog

  • 默认值:511
  • 描述:TCP连接队列大小
  • 建议值:根据系统内核参数调整,不超过net.core.somaxconn的值

bind

  • 默认值:127.0.0.1
  • 描述:Redis绑定的IP地址
  • 建议值:生产环境建议绑定特定IP,避免绑定0.0.0.0导致安全风险

timeout

  • 默认值:0
  • 描述:客户端连接超时时间(秒),0表示永不超时
  • 建议值:根据业务需求设置,一般建议300-1800秒

数据库配置

databases

  • 默认值:16
  • 描述:Redis默认创建的数据库数量
  • 建议值:根据业务需求调整,不需要太多数据库时可以减少

网络配置参数

TCP配置

tcp-keepalive

  • 默认值:300
  • 描述:TCP keepalive检测间隔(秒)
  • 建议值:60-300秒,保持连接活跃,及时发现断开的连接

tcp-keepalive-timeout

  • 默认值:5
  • 描述:TCP keepalive超时时间(秒)
  • 建议值:根据系统环境调整

Unix Socket配置

unixsocket

  • 默认值
  • 描述:Unix socket文件路径,为空表示不启用
  • 建议值:本地连接频繁时可以启用,如/var/run/redis/redis-server.sock

unixsocketperm

  • 默认值:0
  • 描述:Unix socket文件权限
  • 建议值:启用Unix socket时设置为700或755

持久化配置参数

RDB配置

save

  • 默认值:save 900 1 save 300 10 save 60 10000
  • 描述:自动触发RDB持久化的条件
  • 建议值:根据数据重要性和写入频率调整

stop-writes-on-bgsave-error

  • 默认值:yes
  • 描述:BGSAVE失败时是否停止写入操作
  • 建议值:生产环境建议设置为yes,确保数据一致性

rdbcompression

  • 默认值:yes
  • 描述:是否压缩RDB文件
  • 建议值:yes,减少文件大小;对CPU敏感场景可以设置为no

rdbchecksum

  • 默认值:yes
  • 描述:是否对RDB文件进行校验
  • 建议值:yes,确保文件完整性;对CPU敏感场景可以设置为no

dbfilename

  • 默认值:dump.rdb
  • 描述:RDB文件名
  • 建议值:根据需要调整,如redis-6379.rdb

dir

  • 默认值:./
  • 描述:持久化文件存储目录
  • 建议值:生产环境建议设置为专用目录,如/var/lib/redis

AOF配置

appendonly

  • 默认值:no
  • 描述:是否启用AOF持久化
  • 建议值:对数据安全性要求高的场景建议设置为yes

appendfilename

  • 默认值:appendonly.aof
  • 描述:AOF文件名
  • 建议值:根据需要调整,如appendonly-6379.aof

appendfsync

  • 默认值:everysec
  • 描述:AOF同步策略
  • 可选值
    • always:每次写操作都同步(最安全,性能最低)
    • everysec:每秒同步(推荐,平衡安全和性能)
    • no:由操作系统决定(性能最高,安全性最低)
  • 建议值:生产环境建议使用everysec

no-appendfsync-on-rewrite

  • 默认值:no
  • 描述:AOF重写期间是否停止fsync
  • 建议值:yes,避免AOF重写和fsync同时进行导致性能下降

auto-aof-rewrite-percentage

  • 默认值:100
  • 描述:AOF文件大小增长到原来的多少百分比时触发重写
  • 建议值:100-200

auto-aof-rewrite-min-size

  • 默认值:64mb
  • 描述:触发AOF重写的最小文件大小
  • 建议值:根据数据量调整,一般64mb-256mb

aof-load-truncated

  • 默认值:yes
  • 描述:AOF文件被截断时是否仍然加载
  • 建议值:yes,尝试恢复数据

aof-use-rdb-preamble

  • 默认值:yes
  • 描述:是否使用混合持久化(Redis 4.0+)
  • 建议值:yes,结合RDB和AOF的优点

内存管理配置参数

内存限制

maxmemory

  • 默认值:0
  • 描述:Redis最大使用内存(字节),0表示不限制
  • 建议值:根据服务器内存大小设置,一般为服务器内存的70%-80%

maxmemory-policy

  • 默认值:noeviction
  • 描述:内存达到上限时的淘汰策略
  • 可选值
    • volatile-lru:从设置了过期时间的键中,删除最近最少使用的
    • volatile-lfu:从设置了过期时间的键中,删除最不经常使用的
    • volatile-ttl:从设置了过期时间的键中,删除剩余TTL最短的
    • volatile-random:从设置了过期时间的键中,随机删除
    • allkeys-lru:从所有键中,删除最近最少使用的
    • allkeys-lfu:从所有键中,删除最不经常使用的
    • allkeys-random:从所有键中,随机删除
    • noeviction:不删除键,返回错误
  • 建议值:根据业务场景选择,如缓存场景建议使用allkeys-lru或allkeys-lfu

maxmemory-samples

  • 默认值:5
  • 描述:LRU/LFU算法的采样数量
  • 建议值:3-10,值越大越精确,但CPU消耗越高

内存优化

hash-max-ziplist-entries

  • 默认值:512
  • 描述:哈希类型使用ziplist编码的最大元素数
  • 建议值:根据业务需求调整,一般128-512

hash-max-ziplist-value

  • 默认值:64
  • 描述:哈希类型使用ziplist编码的最大元素值(字节)
  • 建议值:根据业务需求调整,一般32-64

list-max-ziplist-size

  • 默认值:-2
  • 描述:列表类型使用ziplist编码的最大大小
  • 可选值
    • 正数:表示最大元素数
    • 负数:
      • -1:最大4kb
      • -2:最大8kb
      • -3:最大16kb
      • -4:最大32kb
      • -5:最大64kb
  • 建议值:根据业务需求调整

list-compress-depth

  • 默认值:0
  • 描述:列表压缩深度,0表示不压缩
  • 建议值:2-4,压缩列表两端的节点

set-max-intset-entries

  • 默认值:512
  • 描述:集合类型使用intset编码的最大元素数
  • 建议值:根据业务需求调整

zset-max-ziplist-entries

  • 默认值:128
  • 描述:有序集合使用ziplist编码的最大元素数
  • 建议值:根据业务需求调整

zset-max-ziplist-value

  • 默认值:64
  • 描述:有序集合使用ziplist编码的最大元素值(字节)
  • 建议值:根据业务需求调整

复制配置参数

主从复制基础配置

replicaof

  • 默认值
  • 描述:从节点复制的主节点地址和端口,如replicaof 127.0.0.1 6379
  • 建议值:从节点配置,指向主节点

masterauth

  • 默认值
  • 描述:主节点的认证密码,主节点启用认证时需要配置
  • 建议值:与主节点的requirepass一致

replica-serve-stale-data

  • 默认值:yes
  • 描述:主从连接断开时,从节点是否继续响应客户端请求
  • 建议值:yes,提高可用性;对数据一致性要求高时设置为no

replica-read-only

  • 默认值:yes
  • 描述:从节点是否只读
  • 建议值:yes,防止误写

复制性能优化

replica-priority

  • 默认值:100
  • 描述:从节点优先级,用于Sentinel故障转移时选择新主节点
  • 建议值:根据节点性能调整,性能高的节点设置较低的值

replica-announce-ip

  • 默认值
  • 描述:从节点向主节点宣布的IP地址
  • 建议值:网络环境复杂时配置,确保主节点能正确识别从节点IP

replica-announce-port

  • 默认值
  • 描述:从节点向主节点宣布的端口
  • 建议值:网络环境复杂时配置

repl-diskless-sync

  • 默认值:no
  • 描述:是否使用无盘复制
  • 建议值:网络带宽充足、磁盘I/O瓶颈时设置为yes

repl-diskless-sync-delay

  • 默认值:5
  • 描述:无盘复制延迟时间(秒)
  • 建议值:0-5秒

repl-ping-replica-period

  • 默认值:10
  • 描述:从节点向主节点发送ping命令的间隔(秒)
  • 建议值:10-60秒

repl-timeout

  • 默认值:60
  • 描述:复制超时时间(秒)
  • 建议值:60-300秒

repl-backlog-size

  • 默认值:1mb
  • 描述:复制积压缓冲区大小
  • 建议值:根据写入频率和网络状况调整,一般64mb-512mb

repl-backlog-ttl

  • 默认值:3600
  • 描述:主节点没有从节点时,复制积压缓冲区的保留时间(秒)
  • 建议值:3600-86400秒

安全配置参数

认证配置

requirepass

  • 默认值
  • 描述:Redis客户端连接认证密码
  • 建议值:生产环境必须设置,使用强密码

masterauth

  • 默认值
  • 描述:主节点认证密码,用于从节点连接主节点
  • 建议值:与主节点的requirepass一致

访问控制

rename-command

  • 默认值
  • 描述:重命名危险命令,如rename-command FLUSHDB ""禁用命令
  • 建议值:生产环境建议禁用或重命名危险命令

rename-command FLUSHDB

  • 示例rename-command FLUSHDB ""
  • 描述:禁用FLUSHDB命令

rename-command FLUSHALL

  • 示例rename-command FLUSHALL ""
  • 描述:禁用FLUSHALL命令

rename-command CONFIG

  • 示例rename-command CONFIG CONFIG_XXX
  • 描述:重命名CONFIG命令

日志配置参数

日志级别

loglevel

  • 默认值:notice
  • 描述:日志级别
  • 可选值:debug, verbose, notice, warning
  • 建议值:生产环境建议使用notice或warning

日志文件

logfile

  • 默认值
  • 描述:日志文件路径,为空表示输出到标准输出
  • 建议值:生产环境建议设置为日志文件,如/var/log/redis/redis-server.log

日志格式

syslog-enabled

  • 默认值:no
  • 描述:是否启用syslog
  • 建议值:根据系统日志管理策略调整

syslog-ident

  • 默认值:redis
  • 描述:syslog标识
  • 建议值:根据系统日志管理策略调整

高级配置参数

多线程I/O配置(Redis 6.0+)

io-threads

  • 默认值:1
  • 描述:I/O线程数,1表示禁用多线程I/O
  • 建议值:根据CPU核心数调整,一般2-8

io-threads-do-reads

  • 默认值:no
  • 描述:是否使用多线程处理读操作
  • 建议值:yes,启用多线程读

客户端配置

maxclients

  • 默认值:10000
  • 描述:最大客户端连接数
  • 建议值:根据业务需求和系统资源调整

client-output-buffer-limit normal

  • 默认值:0 0 0
  • 描述:普通客户端输出缓冲区限制
  • 格式hard-limit soft-limit soft-seconds
  • 建议值0 256mb 60

client-output-buffer-limit replica

  • 默认值:256mb 64mb 60
  • 描述:从节点客户端输出缓冲区限制
  • 建议值:根据复制数据量调整

client-output-buffer-limit pubsub

  • 默认值:32mb 8mb 60
  • 描述:Pub/Sub客户端输出缓冲区限制
  • 建议值:根据Pub/Sub消息量调整

慢查询日志配置

slowlog-log-slower-than

  • 默认值:10000
  • 描述:慢查询阈值(微秒)
  • 建议值:根据业务需求调整,一般10000-100000

slowlog-max-len

  • 默认值:128
  • 描述:慢查询日志最大条数
  • 建议值:128-1024

延迟监控

latency-monitor-threshold

  • 默认值:0
  • 描述:延迟监控阈值(毫秒),0表示禁用
  • 建议值:根据业务需求调整,一般100-1000

常见问题(FAQ)

Q1: 如何选择合适的内存淘汰策略?

A1: 选择内存淘汰策略应根据业务场景:

  • 缓存场景:推荐使用allkeys-lruallkeys-lfu,优先删除不常用的数据
  • 会话存储:推荐使用volatile-lruvolatile-lfu,只淘汰设置了过期时间的会话数据
  • 数据完整性要求高:推荐使用noeviction,内存不足时拒绝写入,避免数据丢失

Q2: RDB和AOF持久化如何选择?

A2: 持久化方式选择应根据数据重要性和性能要求:

  • 数据重要性高:推荐使用AOF持久化,或混合持久化
  • 恢复速度要求高:推荐使用RDB持久化
  • 平衡方案:Redis 4.0+推荐使用混合持久化
  • 高写入场景:可以考虑关闭自动快照,手动触发BGSAVE

Q3: 如何优化Redis内存使用?

A3: 优化Redis内存使用的方法:

  • 选择合适的数据类型和编码方式
  • 避免大key,拆分大集合
  • 配置合理的内存淘汰策略
  • 使用过期时间,自动清理过期数据
  • 调整内存编码参数,如hash-max-ziplist-entries
  • 启用内存压缩(Redis 6.0+)

Q4: 如何提高Redis的安全性?

A4: 提高Redis安全性的方法:

  • 设置强密码认证
  • 绑定特定IP地址,避免绑定0.0.0.0
  • 禁用或重命名危险命令
  • 使用防火墙限制访问
  • 启用SSL/TLS加密(Redis 6.0+)
  • 定期更新Redis版本,修复安全漏洞

Q5: 如何配置Redis主从复制?

A5: 配置Redis主从复制的步骤:

  1. 确保主节点配置正常
  2. 在从节点配置文件中添加replicaof <master-ip> <master-port>
  3. 如果主节点设置了密码,从节点需要配置masterauth <password>
  4. 重启从节点,或使用redis-cli replicaof <master-ip> <master-port>命令动态配置
  5. 使用info replication命令验证复制状态