分布式锁:redisson¶
可重入锁解决一致性、缓存击穿问题,锁定库存。获取数据前加锁。
缓存一致性解决:
- 设置过期时间
- 分布式锁
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;
}