Redis配置

Redis配置文件参数完全指南

Redis 7.0

内存数据结构存储

配置文件 redis.conf
参数数量 200+
最后更新 2024-01-15

配置文件位置

/etc/redis/redis.conf
redis-server /path/to/redis.conf

配置类别

常规 内存 持久化 复制 安全 集群

相关工具

找到 0 个配置参数

常规配置

Redis服务基本配置,包括网络、日志、数据库等

daemonize 常规 2.4+

是否以守护进程方式运行Redis

默认: no 类型: yes/no

说明

如果设置为yes,Redis将以守护进程方式在后台运行。生产环境通常设置为yes,开发环境可设置为no以便查看日志输出。

配置示例

# 以守护进程方式运行
daemonize yes

# 开发环境,前台运行
daemonize no
中影响
需要重启生效
port 常规 1.0+

Redis服务监听端口

默认: 6379 类型: 整数

说明

Redis服务监听的TCP端口。设置为0表示不监听任何端口,仅通过Unix socket通信。

配置示例

# 默认端口
port 6379

# 自定义端口
port 6380

# 禁用TCP端口,仅使用Unix socket
port 0
高影响
需要重启生效
bind 安全 常规 2.0+

绑定监听的网络接口

默认: 127.0.0.1 ::1 类型: IP列表

说明

指定Redis监听哪些网络接口。生产环境强烈建议绑定到内网IP,不要使用0.0.0.0暴露到公网。可以绑定多个IP,用空格分隔。

安全警告: 设置为0.0.0.0将使Redis对所有网络接口开放,存在安全风险!

配置示例

# 仅本地访问(默认)
bind 127.0.0.1 ::1

# 绑定到内网IP
bind 192.168.1.100

# 绑定多个IP
bind 127.0.0.1 192.168.1.100

# 危险!暴露到所有网络接口
bind 0.0.0.0
高影响
需要重启生效
timeout 常规 1.0+

客户端空闲超时时间

默认: 0 类型: 秒

说明

客户端空闲N秒后关闭连接(0表示不关闭)。用于释放长时间空闲的连接,防止连接数过多。

配置示例

# 永不超时(默认)
timeout 0

# 300秒后关闭空闲连接
timeout 300
低影响
无需重启

内存管理

内存限制、淘汰策略和优化配置

数据缓存 40%
复制缓冲区 25%
AOF缓冲区 15%
操作系统 20%
maxmemory 内存 2.0+

Redis最大内存限制

默认: 0 (无限制) 类型: 字节

说明

设置Redis可以使用的最大内存量。达到限制后,根据maxmemory-policy策略进行数据淘汰。生产环境必须设置此值,防止Redis占用所有系统内存。

重要: 建议设置为系统内存的70-80%,为操作系统和复制缓冲区留出空间。

配置示例

# 无限制(默认,不推荐)
maxmemory 0

# 限制为1GB
maxmemory 1gb
# 或
maxmemory 1073741824

# 限制为系统内存的75%
maxmemory 12gb
# 假设系统有16GB内存

常用单位

单位 示例 字节值
k, kb maxmemory 100kb 102,400
m, mb maxmemory 256mb 268,435,456
g, gb maxmemory 1gb 1,073,741,824
(无单位) maxmemory 1000000 1,000,000
高影响
无需重启
maxmemory-policy 内存 2.0+

内存达到上限时的数据淘汰策略

默认: noeviction 类型: 字符串

说明

当内存达到maxmemory限制时,Redis将根据此策略淘汰数据。选择合适的策略对应用性能至关重要。

淘汰策略

策略 说明 适用场景
noeviction 不淘汰,新写入操作会报错 不允许数据丢失的场景
allkeys-lru 从所有key中淘汰最近最少使用的 推荐,通用场景
volatile-lru 从设置了过期时间的key中淘汰LRU 部分数据允许过期
allkeys-random 从所有key中随机淘汰 所有数据同等重要
volatile-random 从设置了过期时间的key中随机淘汰 随机淘汰过期数据
volatile-ttl 淘汰剩余生存时间最短的key 优先淘汰即将过期的数据
allkeys-lfu 从所有key中淘汰最不经常使用的 4.0+,推荐用于热点数据
volatile-lfu 从设置了过期时间的key中淘汰LFU 4.0+,热点数据且有有效期

配置示例

# 推荐:使用LRU淘汰策略
maxmemory-policy allkeys-lru

# Redis 4.0+:使用LFU淘汰策略
maxmemory-policy allkeys-lfu
高影响
无需重启

持久化配置

RDB快照和AOF日志配置

save 持久化 1.0+

RDB快照保存条件

默认: 900 1 300 10 60 10000 类型: 多条件

说明

配置RDB持久化的触发条件。格式为"seconds changes",表示在seconds秒内有changes次修改时自动保存快照。可以配置多个条件。

默认配置解释

save 900 1 900秒内至少有1个key被修改
save 300 10 300秒内至少有10个key被修改
save 60 10000 60秒内至少有10000个key被修改

配置示例

# 禁用RDB持久化
save ""

# 每5分钟如果有至少100个key变化则保存
save 300 100

# 多个条件
save 3600 1 300 100 60 10000
中影响
需要重启生效
appendfsync 持久化 1.2+

AOF文件同步策略

默认: everysec 类型: always/everysec/no

说明

控制AOF文件同步到磁盘的频率,影响性能和数据安全性的平衡。

同步策略

策略 说明 性能 数据安全性
always 每个写命令都同步到磁盘 最高
everysec 每秒同步一次 中等 中等
no 由操作系统决定何时同步

配置示例

# 推荐:每秒同步,平衡性能和数据安全
appendfsync everysec

# 最高数据安全性,但性能较差
appendfsync always
高影响
需要重启生效

性能调优

优化Redis性能的关键参数

性能指标

QPS (查询/秒) 100,000+
延迟 (毫秒) < 1ms
连接数 10,000+

调优建议

  • 启用内存淘汰策略避免OOM
  • 使用Pipeline减少网络往返
  • 合理设置maxclients限制连接数
  • 使用AOF重写压缩日志文件
maxclients 常规 2.4+

最大客户端连接数

默认: 10000 类型: 整数

说明

设置同时连接到Redis的最大客户端数量。达到限制后,新连接会被拒绝。需要根据服务器资源和实际需求调整。

提示: 每个连接大约占用10KB内存,10000个连接约占用100MB内存。

配置示例

# 默认10000个连接
maxclients 10000

# 限制为5000个连接
maxclients 5000

# 高并发场景,20000个连接
maxclients 20000
中影响
需要重启生效
tcp-keepalive 常规 3.2+

TCP keepalive检测间隔

默认: 300 类型: 秒

说明

如果设置为非零值,则使用SO_KEEPALIVE向客户端发送TCP ACK,用于检测空闲连接是否仍然存活。有助于清理因网络问题导致的僵尸连接。

配置示例

# 每5分钟检测一次
tcp-keepalive 300

# 每60秒检测一次(更频繁)
tcp-keepalive 60

# 禁用TCP keepalive
tcp-keepalive 0
低影响
需要重启生效

配置示例

完整的Redis配置文件示例

生产环境配置示例

适用于高可用、高并发的生产环境

# ================================= 生产环境Redis配置 =================================

# 常规配置
port 6379
bind 192.168.1.100
daemonize yes
pidfile /var/run/redis_6379.pid
loglevel notice
logfile "/var/log/redis/redis.log"
databases 16
timeout 300
tcp-keepalive 60

# 内存管理
maxmemory 8gb
maxmemory-policy allkeys-lru
maxmemory-samples 5

# 持久化
save 900 1 300 10 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /var/lib/redis

# AOF配置
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

# 性能调优
maxclients 10000
hz 10
tcp-backlog 511

# 安全配置
requirepass "YourStrongPassword123!"
# rename-command FLUSHALL "" # 禁用危险命令
# rename-command FLUSHDB ""
# rename-command CONFIG ""

配置说明

  • 绑定到内网IP,增强安全性
  • 设置8GB内存限制和LRU淘汰策略
  • 同时启用RDB和AOF持久化
  • AOF每秒同步,平衡性能和数据安全
  • 设置连接密码,提高安全性
  • 可选的危险命令禁用

开发环境配置示例

适用于本地开发和测试环境

# ================================= 开发环境Redis配置 =================================

# 常规配置
port 6379
bind 127.0.0.1
daemonize no
loglevel verbose
logfile ""
databases 16

# 内存管理(宽松)
maxmemory 512mb
maxmemory-policy allkeys-lru

# 持久化(简化)
save 900 1
stop-writes-on-bgsave-error no
rdbcompression yes
dbfilename dump.rdb
dir ./

# AOF配置(可选)
# appendonly no

# 性能调优(默认)
maxclients 10000

# 安全配置(简化)
# requirepass ""

# 其他
timeout 0
tcp-keepalive 0

配置说明

  • 前台运行,方便查看日志
  • 仅绑定到localhost,安全性足够
  • 宽松的内存限制(512MB)
  • 简化持久化配置
  • 默认禁用AOF,减少磁盘IO
  • 不设置密码,方便连接