Skip to content

Latest commit

 

History

History
21 lines (16 loc) · 1.45 KB

multicache.md

File metadata and controls

21 lines (16 loc) · 1.45 KB

多级缓存与常见的缓存问题

1、缓存失效

场景: 系统拥有5w的用户数据,将这5w的用户数据进行了缓存,并设置了超时时间为1小时。当一小时过后,这5w用户的缓存数据同时失效,从而导致大批量的接口请求访问后台获取用户数据,访问的激增可能会导致服务器服务不可用以及宕机的情况。

解决方案: 可以采用随机数访问的方式,对缓存的数据设置不一样的失效时间,从而在数据失效后重新获取数据时达到分流的效果。

2、缓存穿透

场景: 系统用户A,当数据库中不存在A用户的数据,此时用户通过多级缓存,最后到达数据库层面去查询用户A的数据,而此时没有A用户数据,从而不会被放入缓存中,因此导致缓存穿透问题。

解决方案:

  • 缓存空对象
    对于在数据库为查询到的用户数据,可以将value设置为空,存放至缓存中。来避免未查到数据导致到达数据库层面,导致数据库访问数激增,拥有数据库宕机的风险。
  • 单独过滤处理
    对于数据为空的Key进行统一的处理,在请求时统一的拦截处理。避免请求穿透到后端数据库。

3、缓存雪崩

场景:短时间内对系统造成冲击与影响,导致缓存节点故障

解决方案:

  • 采用一致性的Hash算法来解决,缓解某一服务器的压力,达到负载均衡。