Files
Hui-s-notebook/logseq-java/pages/缓存问题.md
2024-02-02 00:12:49 +08:00

995 B
Raw Blame History

  • 缓存雪崩
    • 缓存大面积过期请求都被转发到DB

    • 设置随机过期时间
    • 热点数据永不过期
  • 缓存击穿
    • 缓存中没有数据库中有存放数据初始化及key过期

    • 热点key永不过期逻辑上设置一个过期时间并定期重建缓存
    • 加载DB的时候防止并发
    • 给key续期
  • 缓存穿透
    • 缓存中查不到,数据库也查不到

    • 对参数进行合法性校验
    • 缓存空值并设置过期时间
    • 布隆过滤器
  • 基于DCL机制解决突发热点缓存并发重建
    • 带货冷门商品redis未缓存
    • 大量请求同时查询数据库
    • 加锁将查询缓存和查询数据库缓存到redis代码放入同步代码块
    • Double Check Lock 双重检测锁,单例模式也有应用
    • synchronized只在单个JVM生效如果存在两个同时的大量并发重建第二个会一直被阻塞
    • 分布式锁
      • setnx key value
      • RLock lock = redission.getLock();
      • 使用try-catch-finally