缓存雪崩
什么是缓存雪崩
高并发的情况下,对统一数据(如访问订单列表)的访问量巨大,我们会采用缓存来避免大量对数据库访问,造成数据库压力过大问题,由于缓存一般设置了过期时间,如果在网站访问量很大的时候缓存过期,这是所有的访问都会去读取数据库,造成数据库压力过大。
解决方法
- 采用锁机制,当查询不到缓存时,进入查询数据库代码块加锁,同时只能有一个请求进行查询和缓存。
- 在缓存过期之前重新设置缓存,做法为,设置一个辅助值,他的缓存时间稍微比需要缓存的数据短些,查询缓存时如果查询不到到辅助值,证明缓存需要更新,这时更新缓存即可。为了提高效率,可以将重新缓存的请求先放入队列,使用另外一个线程执行查询数据库并缓存的任务。
缓存血本缓存