1. 缓存雪崩
指大批缓存的key同时出现过期,导致这一瞬间db承受大量数据库查询压力。
解决方案:设置过期时间的时候添加一个随机因子,避免大量的key使用同样的过期时间。
2.缓存穿透
查询未被缓存的数据。比如查询一个不存在的主键id,由于数据库中查询不到数据,数据不会被缓存。从而导致每次查询,压力都到达了db层。
解决方案:参数校验,对于无效id直接返回孔;允许缓存null。
3.缓存击穿
有时候系统中缓存的某些热点key承受了大量的请求,当它们过期的时候,瞬间大量的并发请求就会到达db层。
解决方案:热点key永不过期; 对热点数据的db请求加分布式锁。