Redis 是高性能键值型 NoSQL 数据库 ,广泛用于缓存、消息队列、分布式锁、会话存储等场景。正确配置 + 针对性优化,能让 Redis 支撑 10W+ QPS、低延迟、高可用。
本文从安装配置、核心参数优化、性能优化、内存优化、持久化优化、高可用、安全优化全维度讲解,可直接用于生产环境。
一、Redis 基础安装与配置
1. 快速安装(Linux)
bash
运行
# 安装依赖
yum install -y gcc make
# 下载源码(推荐稳定版 7.0+/6.2+)
wget https://download.redis.io/releases/redis-6.2.14.tar.gz
# 解压编译
tar -zxvf redis-6.2.14.tar.gz && cd redis-6.2.14
make && make install
2. 生产环境推荐配置文件(redis.conf)
生产禁止使用默认配置,必须修改以下核心项:
ini
# 1. 基础配置
daemonize yes # 后台运行
pidfile /var/run/redis_6379.pid
logfile "/var/log/redis/redis.log" # 日志文件
dir /var/lib/redis # 数据文件目录
port 6379 # 端口
bind 0.0.0.0 # 允许所有IP访问(配合密码+防火墙)
# 2. 安全配置
requirepass 你的强密码 # 开启密码认证(必开)
protected-mode no # 关闭保护模式(公网访问必须)
# 3. 客户端配置
timeout 300 # 空闲连接超时关闭
tcp-keepalive 300 # TCP心跳保活
maxclients 10000 # 最大连接数
# 4. 内存配置(核心)
maxmemory 8G # 最大使用内存(根据服务器配置)
maxmemory-policy allkeys-lru # 内存满后淘汰策略(缓存首选)
# 5. 持久化配置
appendonly yes # 开启AOF持久化
appendfsync everysec # AOF刷盘策略(性能+安全平衡)
save 3600 1 300 100 60 10000 # RDB快照
二、Redis 核心优化(生产必做)
1. 内存优化(最关键)
Redis 是内存型数据库,内存配置直接决定性能和稳定性。
-
设置最大内存
maxmemory- 物理内存 8G 服务器:推荐
maxmemory 6G - 物理内存 16G 服务器:推荐
maxmemory 12G - 禁止不设置,否则内存溢出会导致服务器宕机
- 物理内存 8G 服务器:推荐
-
内存淘汰策略(缓存场景必选)
ini
maxmemory-policy allkeys-lru- allkeys-lru:淘汰最少使用的键(缓存业务首选)
- volatile-lru:只淘汰带过期时间的键
- noeviction:不淘汰(写满直接报错,禁止用于缓存)
-
键值设计优化
- 避免使用超大键(如 1MB 以上的 string)
- 集合数据使用
hash/list/set/zset压缩存储 - 所有缓存键必须设置过期时间
2. 性能优化(提升吞吐量)
- 关闭透明大页 THP(Redis 官方强制要求)
bash
运行
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local
- TCP backlog 优化
ini
tcp-backlog 511
- 服务器内核优化
ini
# /etc/sysctl.conf
net.core.somaxconn = 1024
vm.overcommit_memory = 1
net.ipv4.tcp_syncookies = 1
执行 sysctl -p 生效
- 使用 pipeline 批量操作批量执行命令减少网络开销,性能提升 5~10 倍。
3. 持久化优化(数据安全 + 性能)
Redis 提供 RDB + AOF 两种持久化,生产推荐混合持久化。
表格
| 方案 | 优点 | 缺点 | 生产推荐 |
|---|---|---|---|
| RDB | 恢复快、体积小 | 丢数据风险大 | 必须开启 |
| AOF | 数据安全性高 | 文件大、恢复慢 | 必须开启 |
| 混合持久化 | 兼顾安全与速度 | 无明显缺点 | 首选 |
生产推荐配置
ini
appendonly yes
aof-use-rdb-preamble yes # 开启混合持久化
appendfsync everysec # 每秒刷盘(性能最优)
# appendfsync always # 每次写入都刷盘(最安全,性能差)
4. 高可用优化
-
主从复制
- 主节点写入,从节点读取,分担压力
- 配置:从节点执行
replicaof 主IP 端口
-
哨兵模式(Sentinel)
- 自动故障转移
- 主节点宕机自动切换从节点,保证服务不中断
-
Redis Cluster(集群)
- 海量数据分片存储
- 支撑高并发、横向扩展
5. 安全优化(防止被攻击)
- 必须设置密码
requirepass 强密码 - 禁止使用默认端口 6379
- 防火墙限制 IP 访问
- 禁止外网直接访问,使用内网 + 跳板机
- 关闭危险命令
ini
rename-command CONFIG ""
rename-command FLUSHDB ""
rename-command FLUSHALL ""
三、Redis 性能监控命令
bash
运行
# 查看内存使用
redis-cli info memory
# 查看整体运行状态
redis-cli info stats
# 查看慢查询
redis-cli slowlog get 10
# 实时监控命令执行
redis-cli monitor
核心监控指标
- 内存使用率 < 90%
- 命中率 > 95%(缓存场景)
- 连接数正常、无频繁淘汰
- 无慢查询
四、生产环境最佳实践总结
-
缓存场景
- 开启
allkeys-lru淘汰策略 - 所有键设置过期时间
- 混合持久化 + AOF 每秒刷盘
- 开启
-
内存配置maxmemory ≤ 物理内存的 75%
-
性能关闭 THP、内核调优、使用 pipeline
-
高可用主从 + 哨兵(中小型)Redis Cluster(大型分布式)
-
安全密码 + 防火墙 + 禁用危险命令
总结
- Redis 优化核心:内存控制、持久化策略、键值设计、安全防护
- 生产环境必须修改默认配置,禁止裸奔
- 缓存优先
allkeys-lru,数据存储优先混合持久化 - 配合主从 / 哨兵 / 集群实现高可用、高并发