大Key、热Key的发现与处理 定义 名词 定义 :: 大Key 容量比较大的。String类型,单个Key对应的大小大于10KB。其他集合类型的Key,所有成员总大小大于1MB的 Key的元素较多。一般定义集合类型的Key中元素超过3000个,则认为其为大Key 热Key 一个Key被操作的频率和资源占用多少来判定其是否为热Key 访问频率高:比如总QPS(每秒查询率)为5,000,而其中一个Key的每秒访问量达到了3,000 带宽使用率高:某个Key大小可能占了1MB,每秒内频繁去查询, 占用了网络的大部分带宽 大Key和热Key引发的问题 场景 问题 大Key 客户端执行命令的时长变慢 大Key Redis内存达到maxmemory参数定义的内存使用上限,导致操作阻塞或重要的Key被逐出,更可能引发OOM导致被操作系统杀死 大Key 对大Key频繁执行读请求,会占用大量网络带宽,导致服务变慢,同时易影响其他使用的服务 大Key 对大Key执行修改或删除,可能造成主库较长时间的阻塞,进而可能引发同步中断或主从切换 大Key 对集群版或CLUSTER版实例,容易造成内存使用不均 热Key 占用大量的CPU资源,影响其他请求响应,导致整体性能降低 热Key 对集群版或CLUSTER版实例,容易造成分片压力分配不均的情况。会导致单个分片成为性能瓶颈点 热Key 容易造成缓存击穿。可能超出缓存的承受能力,缓存处理不过来。大量业务请求可能直接访问后端数据库,数据库承受不了大量请求访问可能导致服务不可用,严重影响业务