如何解决Redis的热点key问题?


一、什么是热点key呢?

热点key指的是频繁访问的key,比如明星八卦带来的微博热搜、双十一带来的秒杀活动等,都很容易出现热点key。

热点key带来的问题也很明显,就比如突然的微博热搜导致微博卡顿、宕机的情况,就是因为热点key被频繁访问导致机器处理不过来。

二、如何提前发现热点key?

如果我们能提前发现热点key,那么就能针对性地做出优化,比如双十一的秒杀活动。

提前发现热点key的几个点:

  • 针对可预见的场景,比如重要节假日、秒杀活动等
  • 针对不可预见的场景,比如明星八卦的微博热搜等,就可以使用大数据进行分析,及时发现即将出现的热点key

三、如何解决热点key问题?

解决热点key问题的方案:

  • 多级缓存:采用客户端缓存、CDN缓存、服务器本地缓存等多级缓存,减轻突增流量对Redis缓存造成的压力
  • 流量分散:可将热key分散在多个Redis节点中来达到流量分散的目的,避免单节点负载过高(客户端访问时随机访问某个后缀的热key,比如iphone秒杀时,可以分散成多个key:iphone_1、iphone_2、…、iphone_10)
  • 降级兜底:如果实在流量过大导致系统崩溃,还是需要及时降级返回一个兜底的数据,防止系统不可用
  • 集群部署:保证Redis集群的容错和恢复能力

文章作者: GaryLee
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 GaryLee !
  目录