1.缓存击穿
1.1概念
是指当某一key的缓存时间过期时大量并发量的请求同时访问此key,瞬间击穿服务器的直接访问数据库,让数据库处于负载的情况。
1.2解决措施
1.2.1异步定时更新
在缓存处理上,某一个热点数据的过期时间为一小时,那就每59分钟,通过定时任务去更新这个人点key,并重新设置其过期时间
1.2.2互斥锁
当redis中根据key获取value值为空时,先锁上,然后从数据库中加载完毕,释放锁。若其他线程也在请求key时,发现获取锁失败,先阻塞。
2.缓存雪崩
2.1概念
是指大量缓存同时过期或缓存服务器宕机,所有的请求的都直接访问数据库,造成数据库高负载,影响性能,甚至数据库宕机。
2.2解决措施
2.2.1 不同的过期时间
为了避免大量的同一时间过期,可以设置不同的过期使劲按,并且通过定期刷新的方式更新过期时间。
3.缓存穿透
3.1 概念
在缓存服务器上没有缓存数据,数据库上也没有符合条件的数据,当时业务系统每次都会绕过缓存服务器查询下游的数据库,缓存服务器完全失去了他的作用
3.2 解决方法
3.2.1设置空白值
可以对这些key对应的设为null,放入缓存,这样再出现这个key的请求的时候,直接返回null即可。
3.2.1 布隆过滤器
布隆过滤器是一个概率性的数据结构,它可以判断这个数据存不存在,一定不存在的直接返回,避免了数据库的压力。