Redis的缓存雪崩,击穿,穿透的介绍
- 缓存雪崩
缓存雪崩是指在同一时段大量的缓存失效,导致数据库负载过高,引起故障。
解决方法:
- 使用过期时间时,通过分散缓存失效时间,避免同一时刻大量失效。
- 设置热点数据不设置过期时间或者设置永不过期。
- 实现缓存层的高可用,通过集群或者其他机制保证缓存层的高可用。
- 缓存击穿
缓存击穿是指一个key非常热点,在不夯实的情况下,此时缓存正好失效,引起大量请求直接打到数据库上。
解决方法:
- 设置热点数据永不过期或者访问时延长缓存时间。
- 加入互斥锁,保证同时只有一个请求可以访问数据库。
- 实现服务限流,防止大流量直接打到数据库。
- 缓存穿透
缓存穿透是指大量请求查询不存在的key,缓存中没有数据,这些请求会直接打到数据库上。
解决方法:
- 通过布隆过滤器预先判断key是否存在,不存在的话就不查询缓存。
- 对于不存在的key也进行缓存,值为空或者默认值,避免每次都打到数据库。
- 实现服务限流,防止大流量直接打到数据库。
注意:以上解决方法需要根据实际业务场景进行选择和应用。
评论已关闭