广告位联系
返回顶部
分享到

Redis 生产环境配置文件 redis.conf 配置介绍

Redis 来源:互联网 作者:佚名 发布时间:2026-09-12 20:28:34 人浏览
摘要

Redis 默认配置可以快速启动服务,但生产环境还需要重点考虑持久化、安全认证、内存淘汰、连接数和故障恢复。本文基于一份完整的redis.conf,逐项解释这些配置背后的作用,并给出启动验证

Redis 默认配置可以快速启动服务,但生产环境还需要重点考虑持久化、安全认证、内存淘汰、连接数和故障恢复。本文基于一份完整的 redis.conf,逐项解释这些配置背后的作用,并给出启动验证方法。

本文示例适合学习、测试和内网部署。生产环境使用前,请结合机器内存、网络拓扑、数据重要性和业务访问模式调整。

一、准备工作

假设 Redis 配置目录为:

1

/data/redis/conf

创建配置目录和数据目录:

1

2

3

mkdir -p /data/redis/conf

mkdir -p /data

chown -R redis:redis /data/redis /data

如果系统中没有 redis 用户,请根据实际运行用户调整权限。

二、创建 redis.conf

执行下面的命令:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

cat > /data/redis/conf/redis.conf << 'EOF'

# 基础配置

port 6379

daemonize no

pidfile /var/run/redis_6379.pid

loglevel notice

logfile ""

# 持久化配置 - RDB

save 900 1

save 300 10

save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

dir /data

# 持久化配置 - AOF

appendonly yes

appendfilename "appendonly.aof"

appendfsync everysec

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

aof-use-rdb-preamble yes

# 安全配置

requirepass admin123

masterauth admin123

# 性能优化

maxclients 10000

maxmemory 2gb

maxmemory-policy allkeys-lru

# 网络配置

bind 0.0.0.0

protected-mode yes

tcp-backlog 511

timeout 0

tcp-keepalive 300

# 其他优化

databases 16

rename-command FLUSHDB ""

rename-command FLUSHALL ""

rename-command CONFIG ""

EOF

检查文件:

1

sed -n '1,240p' /data/redis/conf/redis.conf

三、基础运行配置

1. 端口与进程模式

1

2

port 6379

daemonize no

Redis 默认监听 9637 端口。多个实例需要使用不同端口。

daemonize no 表示前台运行,适合 Docker、Kubernetes 和 systemd 管理。容器需要主进程保持在前台,日志也可以统一输出到标准输出。

2. PID 与日志

1

2

3

pidfile /var/run/redis_6379.pid

loglevel notice

logfile ""

notice 是适合生产环境的日志级别。空日志文件名表示输出到标准输出。传统服务器如果需要文件日志,可以改为:

1

logfile "/data/redis/log/redis.log"

四、RDB 持久化

RDB 是 Redis 的快照机制,会在满足条件时生成 dump.rdb。

1

2

3

save 900 1

save 300 10

save 60 10000

三条规则分别表示:

  • 900 秒内至少有 1 次变化,执行快照;
  • 300 秒内至少有 10 次变化,执行快照;
  • 60 秒内至少有 10000 次变化,执行快照。

多个规则是“或”关系,满足任意一条即可触发。

1

2

3

4

5

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

dir /data

快照失败时停止写入,可以尽早暴露磁盘空间、目录权限或文件系统问题。压缩可以节省磁盘,校验可以帮助发现文件损坏,生产环境通常建议开启。

RDB 文件通常位于:

1

/data/dump.rdb

需要确保目录存在、运行用户有写权限,并监控磁盘空间。

五、AOF 持久化

AOF 会记录 Redis 执行过的写命令,通常比 RDB 具有更高的数据恢复精度。

1

2

3

appendonly yes

appendfilename "appendonly.aof"

appendfsync everysec

appendfsync 常见策略如下:

配置 说明 特点
always 每条写命令同步 安全性最高,性能较低
everysec 每秒同步一次 常见的平衡方案
no 由操作系统决定 性能较高,安全性较低

everysec 发生机器宕机时通常最多丢失约 1 秒内的写入数据。

AOF 重写相关配置:

1

2

3

4

5

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

aof-use-rdb-preamble yes

AOF 文件至少达到 64 MB,并且相比上次重写后增长 100% 时,会自动触发重写。AOF 文件末尾不完整时,aof-load-truncated yes 会尝试截断损坏尾部并继续启动,但损坏部分的数据可能无法恢复。

较新的 Redis 版本可能使用多个 AOF 文件和清单文件,实际结构应以数据目录为准。

六、安全配置

1. 密码认证

1

2

requirepass admin123

masterauth admin123

客户端测试:

1

redis-cli -h 127.0.0.1 -p 6379 -a 'admin123' PING

预期返回:

1

PONG

admin123 只能用于演示。生产环境必须替换为高强度随机密码,并避免将密码写入公开脚本或 Shell 历史。

requirepass 控制普通客户端访问,masterauth 用于从节点连接主节点时认证。Redis 新版本还可以使用 ACL 为不同用户配置不同权限。

2. 网络暴露风险

1

2

bind 0.0.0.0

protected-mode yes

bind 0.0.0.0 表示监听所有网卡,会允许远程连接,但也会扩大攻击面。更安全的方式是绑定内网地址:

1

bind 127.0.0.1 192.168.1.10

如果必须监听所有网卡,应同时配置强密码、云安全组、防火墙白名单,并禁止公网访问 6379。保护模式不能替代网络隔离和访问控制。

七、内存与性能

1

2

3

maxclients 10000

maxmemory 2gb

maxmemory-policy allkeys-lru

maxclients 表示最多允许约 10000 个客户端连接,但最终还受到文件描述符限制影响:

1

ulimit -n

maxmemory 2gb 限制 Redis 数据使用的最大内存,但 AOF 重写、RDB fork、复制缓冲区和客户端缓冲区都可能额外占用内存,因此不要把它设置到服务器总内存上限。

allkeys-lru 会从所有 Key 中淘汰最近最少使用的数据,适合缓存场景。常见策略包括:

策略 说明
noeviction 不淘汰,内存不足时写入报错
allkeys-lru 从所有 Key 中淘汰最近最少使用的数据
volatile-lru 只从设置过期时间的 Key 中淘汰
allkeys-lfu 淘汰最不常使用的数据
volatile-ttl 优先淘汰剩余 TTL 较短的数据

如果 Redis 同时存储缓存和重要业务数据,不能简单使用 allkeys-lru,否则重要数据也可能被淘汰。

八、网络与逻辑数据库

1

2

3

4

tcp-backlog 511

timeout 0

tcp-keepalive 300

databases 16

tcp-backlog 控制连接队列大小,高并发场景还会受到操作系统 somaxconn 限制:

1

sysctl net.core.somaxconn

timeout 0 表示不主动关闭空闲连接,连接池场景下通常由客户端管理生命周期。tcp-keepalive 300 用于检测失效长连接。

Redis 默认提供 16 个逻辑数据库,可以通过以下命令切换:

1

SELECT 1

实际业务更推荐使用 Key 前缀区分业务。Redis Cluster 通常只使用数据库 0。

九、禁用高风险命令

1

2

3

rename-command FLUSHDB ""

rename-command FLUSHALL ""

rename-command CONFIG ""

这三行分别禁用当前库清空、所有库清空和动态修改配置,可以降低误操作风险。

但禁用 CONFIG 可能影响运维工具。rename-command 也不是完整的安全方案,生产环境更推荐结合 ACL 做权限分级。

十、启动与验证

以前台方式启动:

1

redis-server /data/redis/conf/redis.conf

检查进程和端口:

1

2

ps -ef | grep redis-server

ss -lntp | grep 6379

查看服务、内存和持久化状态:

1

2

3

redis-cli -h 127.0.0.1 -p 6379 -a 'admin123' INFO server

redis-cli -h 127.0.0.1 -p 6379 -a 'admin123' INFO memory

redis-cli -h 127.0.0.1 -p 6379 -a 'admin123' INFO persistence

验证高风险命令:

1

redis-cli -h 127.0.0.1 -p 6379 -a 'admin123' FLUSHALL

预期返回类似:

1

ERR unknown command 'FLUSHALL'

十一、常见问题

1. Redis 无法打开 AOF 文件

检查 /data 是否存在以及运行用户是否拥有写权限:

1

2

ls -ld /data

chown -R redis:redis /data

2. 远程客户端无法连接

依次检查监听地址、防火墙、云安全组、容器端口映射、客户端密码和网络策略。Redis 监听配置只是网络链路中的一个环节。

3. RDB 和 AOF 是否必须同时开启

不一定。临时缓存可以根据业务容忍度关闭持久化;重要数据则应结合 RDB、AOF、备份和恢复演练。两者同时开启可以兼顾恢复速度与数据完整性,但会增加磁盘 IO 和管理复杂度。

4.maxmemory 2gb是否代表进程只占用 2 GB

不是。Redis 还可能因为重写、fork、复制缓冲区和内部开销额外占用内存,服务器必须预留余量。

十二、生产环境检查清单

  • 已设置强密码或 Redis ACL
  • Redis 没有直接暴露在公网
  • bind 已限制为内网地址
  • 防火墙和安全组已设置白名单
  • /data 目录权限正确
  • RDB 和 AOF 文件有备份策略
  • 磁盘空间有监控和告警
  • maxmemory 小于服务器实际可用内存
  • 已选择合适的淘汰策略
  • 已评估 maxclients 与文件描述符限制
  • 已确认禁用命令不影响运维工具
  • 已测试 Redis 重启后的数据恢复
  • 已进行故障恢复演练
  • 已固定 Redis 软件或镜像版本

总结

Redis 配置文件覆盖了服务运行、数据安全、故障恢复、内存管理和网络访问等多个方面。

本文的核心思路是:

  1. 使用前台模式运行,方便容器和进程管理;
  2. 结合 RDB 与 AOF,提升数据恢复能力;
  3. 使用 everysec 平衡 AOF 安全性与性能;
  4. 通过 maxmemory 和淘汰策略控制内存;
  5. 通过密码、网络白名单和禁用高风险命令降低风险;
  6. 使用监控、备份和恢复演练保障生产可靠性。

最后再次提醒:示例中的 admin123 只能用于演示。生产环境应替换为高强度密码,并结合内网隔离、防火墙、ACL 和安全审计共同保护 Redis。


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计