缓存雪崩是指在某一时刻,大量的缓存数据同时失效,导致大量的请求直接打到数据库上,从而引发数据库的压力激增,可能导致整个系统的崩溃,这种现象被称为缓存雪崩。
缓存雪崩通常由于缓存的过期策略或者缓存服务器的故障导致。例如,如果我们将大量的缓存数据设置为在同一时间点过期,那么在这个时间点,这些缓存数据将同时失效,导致大量的请求直接打到数据库上,从而可能引发缓存雪崩。
缓存雪崩的影响是灾难性的。由于大量的请求直接打到数据库上,数据库的压力激增,可能导致数据库崩溃,从而影响整个系统的正常运行。在极端情况下,可能导致整个系统的崩溃。
防止缓存雪崩的策略主要有以下几种:
缓存击穿是指一个存在的数据在缓存中过期,导致所有的请求都直接打到数据库,造成数据库短时间内压力过大。这种现象被称为缓存击穿。
缓存击穿通常发生在一个热点数据的缓存过期的时候。由于这个数据非常热门,所以在缓存过期的瞬间,大量的请求会直接打到数据库。
缓存击穿会导致大量的请求直接访问数据库,从而增加数据库的负载,可能会导致数据库性能下降,甚至崩溃。
防止缓存击穿的策略主要有以下几种:
SETNX
或者Memcache的ADD
)去set
一个mutex key
,当操作返回成功时,再去load db
。这样可以防止大量的并发请求去数据库加载数据。缓存穿透是指查询一个数据库中不存在的数据,由于缓存中也没有,所以每次查询都会直接访问数据库。如果有大量此类请求,就会对数据库造成很大压力,这种现象被称为缓存穿透。
缓存穿透通常发生在查询一个数据库中不存在的数据时。由于缓存中也没有这个数据,所以每次查询都会直接访问数据库。如果有大量此类请求,就会造成缓存穿透。
缓存穿透会导致大量的请求直接访问数据库,从而增加数据库的负载,可能会导致数据库性能下降,甚至崩溃。
防止缓存穿透的策略主要有以下几种: