Ch01-缓存雪崩、缓存击穿、缓存穿透
February 1, 2023
通常情况下可以采用限流降级等技术,限制请求的访问频率,避免数据库压力过大,保证应用程序的可用性,这样也可以解决伤处问题。
名词 | 概念 | 导致原因 | 解决方案 |
---|---|---|---|
缓存雪崩 | 缓存中的大量数据同时失效,导致所有请求都落到数据库上,从而导致数据库压力过大,甚至崩溃。 | 通常是由于缓存中的数据过期时间设置相同或相近,导致同时失效 | 可以采用不同的缓存失效策略,如随机失效、定时失效、LRU(Least Recently Used)失效等,避免缓存中的数据同时失效 |
缓存击穿 | 缓存中的某个数据失效,而此时有大量请求同时访问该数据,导致所有请求都落到数据库上,从而导致数据库压力过大,甚至崩溃。 | 通常是由于热点数据被频繁访问,而缓存中的数据失效时间较短,导致缓存中的数据频繁失效。 | 可以将热点数据缓存到内存中,避免频繁访问数据库,提高应用程序的性能。 |
缓存穿透 | 指请求的数据在缓存中不存在,而且数据库中也不存在,导致每次请求都要访问数据库,从而导致数据库压力过大,甚至崩溃 | 通常是由于恶意攻击或者应用程序的缓存配置错误等原因导致。 | 可以采用布隆过滤器等技术,过滤掉不存在的数据 |