缓存防灾
缓存穿透
缓存穿透指的是使用不存在的Key进行大量的高并发访问,这导致缓存无法命中,每次请求都要穿透到后端数据库进行查询,使数据库的压力过大,操作数据库的性能下降。
解决思路
缓存空值,当再次接收到同样的查询请求时,直接返回空值;
对参数进行校验,拦截参数不合法的无效请求
缓存并发
缓存并发的问题通常发生在高并发的场景下,当一个缓存key过期时,因为访问这个缓存的key请求量过大,多个请求同事发现缓存过期,因此多个请求会同事访问数据库来查询最新的数据,并且写回缓存,当访问数据库的请求过大时,会造成数据库的性能下降。
解决思路
使用分布式锁,只让一个线程去访问数据库,并回写缓存,其余线程等待或立即返回空值;
软过期,不适用缓存服务器提供的过期时间,而是由业务程序判断是否过期并更新。
缓存雪崩
缓存服务器重启或大量缓存集中在某一个时间段内失效,给后端数据库造成瞬时的负载升高的压力,压垮数据库。
解决思路
对不同的数据,设置不同的过期时间。
Last updated