缓存穿透、 缓存击穿和缓存雪崩的定义和处理
缓存穿透
- 定义:请求数据库中不存在的数据,使得每个请求都打在数据库上
- 处理方案:处理缓存穿透的方式是即使数据库没有对应的数据,仍旧设置一个特殊缓存,避免请求都打在数据库上。
缓存击穿
- 定义:热点数据的缓存过期后,大量请求打到数据库上,给数据库带来压力。
- 处理方案:
- 建立缓存的时候上锁: 在生成缓存的时候使用互斥锁,避免多个请求同时请求数据库。
- 永不过期: 热点数据不直接设置过期时间,在存放数据的时候,带上数据的过期时间,程序判断过期后,异步更新缓存。
缓存雪崩
- 定义:缓存在某一时刻同时失效,请求全部打到数据库上,数据库瞬时压力过大雪崩。
- 处理方案:
- 错开过期时间: 在给缓存设置过期时间时,过原本的过期时间加上随机值,让缓存错开过期时间。