假设我们有一个sql查询将会耗时2秒。
我们给这个sql查询结果缓存到redis并设置60秒超时时间。
那么在60秒到达的时候,也就是60到62秒的两秒钟,可能几百个请求都没有命中缓存而直接去查询数据库了。
请问如何防止这种情况发生呢?
假设我们有一个sql查询将会耗时2秒。
我们给这个sql查询结果缓存到redis并设置60秒超时时间。
那么在60秒到达的时候,也就是60到62秒的两秒钟,可能几百个请求都没有命中缓存而直接去查询数据库了。
请问如何防止这种情况发生呢?
2 回答931 阅读
1 回答890 阅读
1 回答734 阅读
这个是缓存雪崩: 如果缓存集中在一段时间内失效,发生大量的缓存穿透,所有的查询都落在数据库上
缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透。
缓存雪崩解决方法:
来源: https://blog.csdn.net/m0_3811...