在Debian上优化Redis内存使用可从配置、数据结构、系统层面入手,具体如下:
- 限制最大内存:修改
redis.conf,设置maxmemory参数(如maxmemory 4gb),留出20%-30%内存给系统。 - 选择淘汰策略:根据场景选择
maxmemory-policy,缓存场景用allkeys-lru,持久化场景用volatile-lru。 - 优化数据结构
- 用Hash替代多个String存储键值对,减少内存占用。
- 避免大Key/Value,拆分大对象为小Key存储。
- 使用
ziplist压缩小数据(如小List/Set),通过redis.conf设置list-max-ziplist-entries等参数。
- 设置过期时间:为临时数据添加
EXPIRE,自动清理无用数据。 - 启用内存碎片整理:Redis 4.0+可通过
activedefrag yes开启自动碎片整理。 - 调整系统参数
- 增加文件描述符限制:修改
/etc/security/limits.conf,设置redis soft nofile 65535。 - 绑定CPU核心:通过
taskset命令将Redis进程绑定到特定CPU核心,减少上下文切换。
- 增加文件描述符限制:修改
- 监控与调优
- 使用
INFO memory监控内存使用,重点关注used_memory和mem_fragmentation_ratio。 - 定期分析慢查询:通过
SLOWLOG命令找出高耗时命令并优化。
- 使用
参考来源: