分布式锁:redisson

可重入锁解决一致性、缓存击穿问题,锁定库存。获取数据前加锁。

缓存一致性解决:

  1. 设置过期时间
  2. 分布式锁
    public Map<String, List<Catelog2Vo>> getCatalogJsonFromDBWithRedissonLock() {
        // 1、占分布式锁,去reids占坑
        RLock lock = redisson.getLock("catalogJson-lock");
        lock.lock(); // 阻塞等待
        // 加锁成功,执行业务
        Map<String, List<Catelog2Vo>> dataFromDB;
        try {
            // 访问数据库
            dataFromDB = getCatalogJSONDataFromDB();
        } finally {
            lock.unlock(); // 解锁
        }
        return dataFromDB;
    }