大key指的是:key-value这个键值对中,value占的内存太大(比如value是String类型的时候,存储这个value需要10kb以上的空间)或者当value是有序结合Zet,List,Set时,集合里面的成员数量超过5000个
所以,说是大key,其实叫大value更贴切
大key的危害:会消耗更多的内存空间,bigkey 对性能也会有比较大的影响(读取大key的value非常耗时),因此,我们应该尽量避免写入 bigkey
一些可能出现大key的场景:
一个明星的粉丝列表(用list来实现),必然是大key
如何解决bigkey问题:
(1) 对大key进行拆分 将一个Big Key拆分为多个key-value这样的小Key,并确保每个key的成员数量或者大小在合理范围内,然后再进行存储,通过get不同的key或者使用mget批量获取
(2)压缩value
使用序列化、压缩算法将key的大小控制在合理范围内