Redis实现的一个分布式锁:
String redisId = UUID.randomUUID().toString();
try {
boolean isLock = redisTemplate.opsForValue().setIfAbsent("redisLock", redisId, 25, TimeUnit.SECONDS);
if (!isLock) {
return ResponseEntity.ok().build();
}
//模拟执行业务逻辑
Thread.sleep(1000);
} catch (InterruptedException ex) {
logger.error("当前获取线程的数据失败,原因是:{}", ex.getMessage());
} finally {
if (redisId.equals(redisTemplate.opsForValue().get("redisLock"))) {
redisTemplate.delete("redisLock");
}
}
本文介绍了一种使用Redis实现的分布式锁方案。通过设置唯一ID并利用Redis的setIfAbsent方法来尝试获取锁,若获取失败则直接返回。成功获取锁后会执行业务逻辑,并在完成后释放锁。

2688

被折叠的 条评论
为什么被折叠?



