【Redis】什么是Redis缓存 雪崩、穿透、击穿?(一篇文章就够了)
Redis缓存雪崩、穿透和击穿是指在使用Redis作为缓存时可能遇到的三个问题。
缓存雪崩
缓存雪崩指的是缓存同一时间大量失效,导致所有请求都直接访问数据库,数据库瞬时压力剧增造成服务宕机。
解决方法:
- 设置合理的缓存过期时间。
- 实现缓存预加载,即在缓存即将过期时主动刷新缓存。
- 使用锁或队列控制缓存失效后的数据库访问。
缓存穿透
缓存穿透指查询不存在的数据,缓存中没有数据,每次都会访问数据库。
解决方法:
- 使用布隆过滤器,先检查数据是否存在。
- 为不存在的数据设置一个默认值,比如空对象或特殊值,避免请求穿透到数据库。
- 使用缓存数据库,如Redis,设置一个短暂的过期时间,保证业务正常运行。
缓存击穿
缓存击穿指缓存失效时间点对应高峰访问,大量请求直接打到数据库。
解决方法:
- 设置热点数据永不过期或过期时间长。
- 实现互斥锁,当缓存失效时,多个线程竞争获取互斥锁,只有获取到的线程去数据库查询数据并更新缓存,其他线程等待。
- 使用锁或队列控制缓存失效后的数据库访问。
评论已关闭