外观
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-lru或allkeys-lfu,优先删除不常用的数据 - 会话存储:推荐使用
volatile-lru或volatile-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主从复制的步骤:
- 确保主节点配置正常
- 在从节点配置文件中添加
replicaof <master-ip> <master-port> - 如果主节点设置了密码,从节点需要配置
masterauth <password> - 重启从节点,或使用
redis-cli replicaof <master-ip> <master-port>命令动态配置 - 使用
info replication命令验证复制状态
