995 B
995 B
- 缓存雪崩
-
缓存大面积过期,请求都被转发到DB
- 设置随机过期时间
- 热点数据永不过期
-
- 缓存击穿
-
缓存中没有,数据库中有,存放数据初始化及key过期
- 热点key永不过期,逻辑上设置一个过期时间并定期重建缓存
- 加载DB的时候防止并发
- 给key续期
-
- 缓存穿透
-
缓存中查不到,数据库也查不到
- 对参数进行合法性校验
- 缓存空值并设置过期时间
- 布隆过滤器
-
- 基于DCL机制解决突发热点缓存并发重建
- 带货,冷门商品redis未缓存
- 大量请求同时查询数据库
- 加锁,将查询缓存和查询数据库缓存到redis代码放入同步代码块
- Double Check Lock 双重检测锁,单例模式也有应用
- synchronized只在单个JVM生效,如果存在两个同时的大量并发重建,第二个会一直被阻塞
- 分布式锁
- setnx key value
- RLock lock = redission.getLock();
- 使用try-catch-finally