分布式锁 - JiyangM/spring GitHub Wiki
为了保证在同一个时间只有一个线程操作数据。
比如再购债权和投标购买的接口(秒杀),为了保证数据一致性 使用了分布式锁。
可以使用 redis、zookeeper
JedisLock jedisLock = new JedisLock(jedis, "buyTransferDebt");
try {
if(!jedisLock.acquire()){
return new ResultBean<>(400,"系统繁忙,请稍后重试",null);
}
//其他操作
} catch (Exception e) {
log.error("购买失败",e);
return new ResultBean<>(400,"购买失败",null);
} finally {
jedisLock.release();
jedisPool.returnResource(jedis);
}