什么是热key吗?热key问题怎么解决?
-
所谓热key问题就是,突然有几十万的请求去访问redis上的某个特定key,那么这样会造成流量过于集中,达到物理网卡上限,从而导致这台redis的服务器宕机引发雪崩
-
针对热key的解决方案:
(1)提前把热key打散到不同的服务器,降低压力
(2)加入二级缓存,提前加载热key数据到内存中,如果redis宕机,走内存查询
缓存击穿
-
缓存击穿的概念就是
单个key并发访问过高
,过期时导致所有请求直接打到db上,这个和热key的问题比较类似,只是说的点在于过期导致请求全部打到DB上
-
解决方案:
(1)加锁更新,比如请求查询A,发现缓存中没有,对A这个key加锁,同时去数据库查询数据,写入缓存,再返回给用户,这样后面的请求就可以从缓存中拿到数据了
(2)将过期时间组合写在value中,通过异步的方式不断的刷新过期时