Redis性能调优需围绕内存管理、配置参数、系统内核、持久化策略、网络连接及监控六大核心维度展开,以下是针对Debian系统的具体操作步骤:
内存是Redis性能的核心瓶颈,需通过合理配置限制、优化数据结构及压缩技术提升效率。
/etc/redis/redis.conf
,添加maxmemory
参数限制Redis最大可用内存(建议为物理内存的70%-80%,如maxmemory 4gb
);同时设置maxmemory-policy
为allkeys-lru
(当内存不足时,淘汰所有键中最近最少使用的键,适合缓存场景)或volatile-lru
(仅淘汰设置了过期时间的键)。hash-max-ziplist-entries 512
(当Hash元素≤512时,使用ziplist编码节省内存);EXPIRE key 3600
,过期时间1小时),避免内存无限堆积;active-expire-effort 100
(提高过期键清理频率,0-100,默认10);INFO memory
中的mem_fragmentation_ratio
),若>1.5则重启Redis或执行MEMORY PURGE
(Redis 4.0+)手动释放碎片。/etc/redis/redis.conf
中的tcp-backlog 511
(增大TCP连接队列,应对高并发);maxclients 10000
(最大客户端连接数,默认10000,根据服务器资源调整);timeout 300
(空闲连接超时时间,秒,释放闲置连接)。jemalloc
(性能优于libc
),无需修改allocator
参数(/etc/redis/redis.conf
中默认allocator jemalloc
),确保内存分配高效。echo never > /sys/kernel/mm/transparent_hugepage/enabled
为防止重启失效,将上述命令添加到/etc/rc.local
(需赋予执行权限chmod +x /etc/rc.local
)。/etc/sysctl.conf
,添加以下配置:net.core.somaxconn = 65535 # 增大TCP连接队列长度(默认128,高并发需调大)
vm.overcommit_memory = 1 # 允许内存超额分配(避免fork失败,如AOF重写)
执行sysctl -p
使配置生效。appendonly no
),仅使用RDB(快照);appendonly yes
),并设置appendfsync everysec
(每秒同步一次,平衡性能与安全)。auto-aof-rewrite-min-size 64mb
(AOF文件≥64MB时触发重写,减小文件大小);auto-aof-rewrite-percentage 100
(文件增长100%时触发重写)。/etc/redis/redis.conf
,设置bind 192.168.1.100
(替换为服务器内网IP,限制访问来源);若需修改默认端口,设置port 6380
(避免与系统服务冲突)。redis.conf
中添加tcp-keepalive 300
(每300秒发送一次keepalive包,检测死连接,减少无效连接占用资源)。INFO memory
:查看内存使用情况(如used_memory
、mem_fragmentation_ratio
);INFO clients
:查看当前连接数(connected_clients
);INFO stats
:查看Redis命令统计(total_commands_processed
)。/etc/redis/redis.conf
,设置slowlog-log-slower-than 10000
(执行时间>10ms的命令视为慢查询);slowlog-max-len 128
(慢查询日志最大长度)。通过redis-cli SLOWLOG GET
查看慢查询日志,优化执行缓慢的命令(如避免KEYS *
、大Value操作)。以上步骤需根据Debian系统的具体环境(如内存大小、CPU核心数、业务场景)调整参数,建议在测试环境验证后再应用于生产。