立即学习:https://edu.youkuaiyun.com/course/play/3365/56865?utm_source=blogtoedu
导出redis内存进行分析:
1.提取业务特点
2.了解业务瓶颈
3.发现业务Bug
分析可能会发现大key.
一般是离线分析,导出rdb文件。
redis-rdb-tools
或者导到sqlite
在线内存分析:
Redis-cli -h host -p port -bigkeys
列出各种类型的bigkey
其它也有可能占用内存:
查看client占用内存,比如命令的缓存也用了大量内存;
最佳实践:
1. 选择正确的数据类型。
浮点数-> 整数
Id等的值优先使用整数而不是字符串
使用压缩列表(Hash):
减少大Hash所占用空间。
优先使用Bigmap
HyperLogLog
避免大Key
(1) Json封装的Value使用Hash替代
(2)按日期,前缀等方式 拆成多个
(3)确保不会有无限增长的key(只有push没有pop操作的list等)
(4)可以定期对实例内存进行分析,找出大key进行优化
Scan命令替换keys
对大Key的操作(删除),要分批操作;
pipeline 命令批量发送。减少网络传输。
Lua脚本,原子性。