redis优化内存分为两个层面
大的层面:
合理设置数据过期时间
使用 SCAN + OBJECT IDLETIME 批量定位长期未访问的 Key 并删除合理设置内存淘汰策略
结合 volatile-lru 或 allkeys-lfu 淘汰策略,及时清理无效数据内存碎片优化
启用 jemalloc 分配器,定期执行 MEMORY PURGE 或重启实例整理碎片
监控碎片率(mem_fragmentation_ratio),超过 1.5 时需干预
小的层面:
写入数据时,合理选择数据类型
利用高效数据结构
Bitmaps:适用于布尔型数据(如用户签到、特征标记),1亿用户仅需 12MB 内存
HyperLogLog:统计独立访客(UV)等场景,误差约 0.81%,内存消耗极低
Hash 分桶:大对象拆分为多个 Hash 存储(如用户数据按字段分组),减少单Key体积
案例:使用 HGETALL 分片存储用户属性,避免单 Key 过大导致的性能瓶颈利用数据结构压缩
对文本数据(如 JSON)启用压缩(Snappy、LZ4),压缩率可达 60% 以上key和value写入时避免长字符
例如:user:123:info可以调整为u:123:info 减少key长度