缓存我们经常使用,但是有时候我们却会忽略缓存中的一些问题。
我们将从生产环境的应用的角度,去考虑需要注意的一些异常情况,特别的是在高并发的场景下,如何让我们的缓存在提供高性能支持的同时,去保证数据的准确性,还有系统的稳定性。
首先来看第一个问题,看这张图,这里我们引入的缓存的目的,就是用来帮助数据库去挡掉大部分的读请求,从而提升读请求的响应速度和并发能力。
假如有一段时间,由于种种原因,缓存的数据不在了。这个时候,这些读请求全部都直接落到数据库上面来,如果这个时候并发量很大,就很有可能会把数据库给压垮。数据库一垮基本上整个应用都会被拖垮了,更严重的话会造成一系列的连锁反应,影响到上下游系统。
生产环节出现缓存雪崩的几种情况
总结一下问题:由于缓存数据失效(或不存在),导致大量读请求直接访问数据库,把数据库甚至应用拖垮。这个就是缓存雪崩问题。
可以看到这里问题的关键点,在于大量的缓存数据失效(或不存在),一般在生产环节中,主要有这几种情况,可能会导致引起缓存雪崩问题: