在CentOS上优化Redis内存使用可从以下方面入手:
- 设置内存上限:通过
maxmemory参数限制Redis最大内存(建议设为物理内存的70%-80%),避免内存溢出。 - 选择合适淘汰策略:
allkeys-lru:淘汰所有键中最近最少使用的(生产常用)。volatile-lru:仅淘汰设置了过期时间的键。- 其他策略如
allkeys-lfu(按使用频率淘汰)、volatile-ttl(优先淘汰剩余时间短的键)等。
- 优化数据结构:
- 用哈希表存储对象,减少键数量。
- 合理使用Bitmap、HyperLogLog等节省空间的数据结构。
- 启用压缩与过期机制:
- 对大字符串启用LZF/Snappy压缩。
- 为键设置过期时间,自动释放内存。
- 调整系统参数:
- 禁用透明大页(THP):
echo never > /sys/kernel/mm/transparent_hugepage/enabled。 - 增加文件描述符限制:
ulimit -n 65535。
- 禁用透明大页(THP):
- 监控与调优:
- 使用
INFO memory或RedisInsight监控内存使用、碎片率。 - 定期清理过期数据,避免内存碎片堆积。
- 使用
配置示例(修改redis.conf):
maxmemory 2gb # 设置最大内存为2GB
maxmemory-policy allkeys-lru # 使用LRU淘汰策略