在 CentOS 上优化 Redis 配置,通常从内存、持久化、网络、内核参数、安全与运维几个方面入手。下面给你一套实用、可落地的优化清单(以 CentOS 7/8 + Redis 6/7 为例)。
maxmemory 8gb
maxmemory-policy allkeys-lru
maxmemory:建议为物理内存的 60%~70%allkeys-lru:通用缓存volatile-lru:只淘汰带 TTL 的 keynoeviction:不淘汰(写会报错,不推荐)save 900 1
save 300 100
save 60 10000
save ""
appendonly yes
appendfsync everysec
always:最安全但慢everysec:推荐no:依赖 OSprotected-mode yes
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command KEYS ""
Redis 官方强烈建议关闭:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
永久生效:
# /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
# /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
Redis 配置:
maxclients 10000
vm.overcommit_memory = 1
net.core.somaxconn = 1024
net.ipv4.tcp_max_syn_backlog = 8192
生效:
sysctl -p
overcommit_memory=1可避免 fork 时 OOM
bind 0.0.0.0
port 6379
tcp-backlog 511
如仅内网访问,建议 bind 内网 IP。
slowlog-log-slower-than 10000
slowlog-max-len 128
systemctl enable redis
systemctl start redis
KEYS *io-threads 4
io-threads-do-reads yes
仅适合高并发读场景
redis-cli info memory
redis-cli info stats
redis-cli slowlog get
redis-cli --bigkeys
如果你愿意,可以告诉我:
我可以给你一套针对性配置模板。