Redis热点key的解决思路

架构小魔方 2024-05-15 02:06:16

高并发的系统下,缓存将是提升性能的利器,而面向C端的应用,Redis缓存往往成为大家的不二选择,那是不是使用了缓存我们就能高枕无忧了?其实不然,虽然Redis性能非常好,但是如不正确的使用,也面临着崩溃的风险。常见的影响Redis性能杀手有BigKey、HotKey、流量过大等问题。

什么是Hotkey?

所谓的Hotkey问题就是,突然有几十万的请求去访问redis上的某个特定key。那么,这样会造成流量过于集中,这块机器处理超过它的极限,从而导致这台redis的服务器宕机,如果服务中存在着一些缓存穿透的风险,那接下来这个key的请求,就会直接打到数据库上,从而造成从服务、缓存到数据库的全线崩溃。

Hotkey解决方案

第一种:分而治之,简单来说,将一个Key拆分成为多个Key,比如访问一个Key是Hash数据结构,可以考虑将它进行拆分多个Key,这样就可以将流量分散到不同的key身上,对于非Hash结构的Key ,也可以采用key拷贝的方式 生成多个Key,以空间换时间。

第二种:本地缓存,针对于一些高频访问的Hotkey,可以在服务进行一定时间的本地缓存,这样就能大大减少流量穿透到Redis中去,从而避免Hotkey的产生。

第三种:借助于第三方中间件的能力,识别出HotKey,有针对性的进行HotKey识别和治理,这里推荐京东的Hotkey框架,https://mp.weixin.qq.com/s/xOzEj5HtCeh_ezHDPHw6Jw

写在最后

Redis HotKey的危害在高并发的面向C端的应用中是非常大,这就是好像在应用中随时埋了一颗定时炸弹,不知道什么时候就会触发,因此对于Redis HotKey的治理不容忽视,这也是服务稳定性治理的重要一环。

0 阅读:55

架构小魔方

简介:感谢大家的关注