热Key的解决方案

一、热key背景介绍

什么是redis的热key。

在redis中,热key,指的是在极短时间内,访问频次非常高的key。

  1. 热key出现的场景。
  2. 节假日或者双十一促销活动
  3. 热点事件
  4. 秒杀活动、瞬间大量爬虫

热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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值