1.什么是BigKey和HotKey
1.1.Big Key
Redis big key problem,实际上不是大Key问题,而是Key对应的value过大,因此严格来说是Big Value问题,Redis value is too large (key value is too large)。
到底多大的value会导致big key问题,并没有统一的标准。
例如,对于String类型的value,有时候超过5M属于big key,有时候稳妥起见,超过10K就可以算作Bigey。
Big Key会导致哪些问题呢?
1、由于value值很大,序列化和反序列化时间过长,网络时延也长,从而导致操作Big Key的时候耗时很长,降低了Redis的性能。
2、在集群模式下无法做到负载均衡,导致负载倾斜到某个实例上,单实例的QPS会比较高,内存占用比较多。
3、由于Redis是单线程,如果要对这个大Key进行删除操作,被操作的实例可能会被block住,从而导致无法响应请求。
Big Key是如何产生的呢?
一般是程序设计者对于数据的规模预料不当,或设计考虑遗漏导致的Big Key的产生。
在某些业务场景下,很容易产生Big Key,例如KOL或者流量明星的粉丝列表、投票的统计信息、大批量数据的缓存,等等。
1.2.Hot Key
Hot Key,也叫Hotspot Key,即热点Key。如果某个特定Key突然有大量请求,流量集中到某个实例,甚至导致这台Redis服务器因为达到物理网卡上线而宕机,这个时候其实就是遇到了热点Key 问题。</