本章导学:
- 常见的缓存问题介绍
- 缓存穿透
- 缓存击穿
- 缓存雪崩
一、缓存穿透现象
缓存穿透:指客户端请求的数据在Redis缓存、数据库中都不存在。当数据库中也没有数据,则永远无法添加缓存到Redis。当遇到大量的请求同时访问时,请求会直接穿透到数据库上,给数据库造成很大的压力。
二、缓存击穿现象
缓存击穿:指一个被高并发访问的key(一般存在于秒杀活动中)突然过期、失效,且重建缓存的业务逻辑较为复杂,在缓存重建的过程中,无数的请求直接打到数据库上,造成数据库压力过大。
如图所示:在线程A查询数据库并重建缓存的期间,大量其余线程由于缓存还处于失效状态,直接打到本地数据库导致数据库被击穿。
三、缓存雪崩现象
缓存雪崩:指许多key在同一时刻大量过期,或Redis直接宕机,大量的请求直接打到数据库上,造成数据库瞬时压力过大。