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");
}
}