redis 中的大key 主要包括以下几个部分(超过M级别的):
- 单个简单的key存储的value很大
- hash, set,zset,list 中存储过多的元素
- 一个集群存储了上亿的key
定位大key
查询大key问题查看第一篇文章,有很多方法定位到大key去优化;
- redis-rdb-tools工具 使用redis自带的工具,导出rdb文件,文件中可以查看具体的key类型,大小等信息;
- redis-cli --bigkeys命令使用redis-cli -p 6379 --bigkeys 来进行对整个redis扫描,在线操作;
- Redis 4.0之后的大key的发现与删除方法
- memory usage
- lazyfree机制
- 具体信息请看第一篇文章
解决大key
具体怎么去优化逻辑,可以参考第二篇文章的操作,根据hash值去去key,判断落到哪一个key上,以此来达到拆分大key的方法;
如果是String 类型的,可以考虑改造成list,hash,set等类型,可以根据hash的方法拆分key值落散落到不同的key上去存;
参考
3. Redis大Key优化
题外话
[之前做的优化促销逻辑,使用了zset去实时缓存门店商品数据,然后捞取db刷新逻辑到redis缓存,这里的zset其实数据量就挺大的,可以考虑直接根据门店去hash,落到不同的zset上,这里就可以读取不同的zset达到分门店去处理逻辑]