一、热key背景介绍
什么是redis的热key。
在redis中,热key,指的是在极短时间内,访问频次非常高的key。
- 热key出现的场景。
- 节假日或者双十一促销活动
- 热点事件
- 秒杀活动、瞬间大量爬虫
热key产生的影响。
对应节点的网卡带宽被打满,出现丢包重传、请求波动耗时很大的问题。
请求过多,热点key引起redis节点数据倾斜,缓存服务被打垮
大量的请求穿透到DB,DB扛不住宕机。
热点key的出现,可能会对系统的稳定性和可用性造成巨大的影响。在日常的工作中,我们要尽可能的避免这种情况的出现。比如设计和编码阶段,避免引入全局性的热key。或者在设计时考虑热点key出现的应对方案。
二、如何发现热key。
尽可能预判一些热点key的场景,真实的环境中,还是会有不可预料的场景出现。
- 开发独立的热key检测系统。(比较推荐)
提供单独的热key检测的接入的sdk。应用系统引入sdk侯,热key检测系统,自动计算是否热点key,并推送相关结果给到应用系统。
- 改写redis客户端手机上报数据。
- 改写redis代理层收集上报数据。
利用redis新特性定时扫描上报的数据。
利用redis-cli--hotKeys。获取当前keySpace的热点key,聚合和极短。改方案无需侵入现有的sdk或者Proxy中间件,开发维护成本可控,但是也存在缺点,具体热点key节点的网络流量和系统负载已经比高了。
- 业务预判
三、解决方案。
利用本地缓存,guava cache 和caffeine。
热key的策略。

系统传入热key。
已知的热key的解决方案。
毫秒级别的热key检测。
热key产生的影响。
优点:
抗的qps比较高。
缺点:
受到应用内存限制,容量有限,数据量非常大的时候,占用太多内存,不太适合。
部分热点数据,需要提前预知。
热点数据自动检测,有一定的延迟。系统短时间内承受的风险比较大。
caffeine 和 guava 对比。
三、不可预知的热key的解决方案。
冗余存储部分key。把一个热点key。分解为多个不同的小key。

19万+

被折叠的 条评论
为什么被折叠?



