在 CentOS 上优化 Redis 配置,通常从 内存管理、持久化策略、网络与线程、系统参数、安全与监控 等方面入手。下面给你一套生产环境常用优化方案,按优先级和可操作性来。
yum install -y epel-release
yum install -y redis
# 或编译安装最新稳定版
查看版本:
redis-server --version
配置文件路径一般为:
/etc/redis.conf
maxmemory 4gb
maxmemory-policy allkeys-lru
常用策略:
| 策略 | 说明 |
|---|---|
| allkeys-lru | 常用,淘汰最久未使用 |
| volatile-lru | 仅淘汰设置了过期时间的 key |
| noeviction | 不淘汰,写满报错 |
✅ 推荐:缓存场景用 allkeys-lru
save ""
# 或降低频率
save 900 1
save 300 10
appendonly yes
appendfsync everysec
| 选项 | 性能 | 安全性 |
|---|---|---|
| always | 最低 | 最高 |
| everysec | 推荐 | 高 |
| no | 最高 | 低 |
✅ 生产推荐:appendfsync everysec
tcp-backlog 2048
timeout 0
tcp-keepalive 60
maxclients 10000
⚠ 注意:
maxclients 受系统 ulimit 限制io-threads 4
io-threads-do-reads yes
✅ 仅适用于 Redis 6+ ✅ 不建议超过 CPU 核数
ulimit -n
修改:
vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
vi /etc/sysctl.conf
vm.overcommit_memory = 1
net.core.somaxconn = 2048
net.ipv4.tcp_max_syn_backlog = 2048
生效:
sysctl -p
echo never > /sys/kernel/mm/transparent_hugepage/enabled
写入开机:
vi /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
✅ 避免大 key
user:1001:info ✅
user:1001:orders ✅
❌ 避免:
| 场景 | 推荐 |
|---|---|
| 对象 | hash |
| 排行榜 | sorted set |
| 去重 | set |
| 队列 | list / stream |
slowlog-log-slower-than 10000
slowlog-max-len 128
查看:
redis-cli slowlog get
used_memorykeyspace_hits / missesconnected_clientsredis-cli --latencybind 0.0.0.0
requirepass yourpassword
rename-command FLUSHALL ""
rename-command CONFIG ""
bind 0.0.0.0
port 6379
maxmemory 8gb
maxmemory-policy allkeys-lru
appendonly yes
appendfsync everysec
tcp-backlog 2048
maxclients 10000
io-threads 4
io-threads-do-reads yes
requirepass redis123
✅ 第一优先级
✅ 第二优先级
✅ 第三优先级
如果你愿意,我可以:
直接告诉我你的 使用场景 + 服务器配置 即可。