高并发的系统下,缓存将是提升性能的利器,而面向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的治理不容忽视,这也是服务稳定性治理的重要一环。
转载此文是出于传递更多信息目的。若来源标注错误或侵犯了您的合法权益,请与本站联系,我们将及时更正、删除、谢谢。
https://www.414w.com/read/545143.html