一、什么是热点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集群的容错和恢复能力
- …