分布式锁
Redis分布式锁
总体思路:在Redis中添加一个包含过期时间的key,如果key存在则是有锁状态,key不存在则是无所状态
引入redis包
<dependency> <groupId>org.springframework.boot</groupId> <artifactid>spring-boot-starter-data-redis</artifactId> </dependency>
Redis分布式锁实现
@Compoent @Slf4j public class RedisLock{ @Autowird StringRedisTemplate redisTemplate; // 加锁 public Boolean lock(){ String lockKey = "xxx"; //锁名 long timeout = 1000L; //过期时间 String unit = TimeUtil.MILLISENCONDS; //时间单位 bookean succcess = false; ValueOperations<Stirng,Stirng> ops = redisTemplate.opsForValue(); try{ success = ops.setIfAbsent(lockKey,"1",timeout,unit).booleanValue(); }catch(Exception e){ log.error("RedisLock加锁异常",e); } return success; } //释放锁 public void unLock(){ Stirng lockKey = "xxx"; try{ redisTemplate.delete(lockKey); }catch(Exception e){ log.error("RedisLock释放锁异常",e); } } }
Etcd分布式锁

浙公网安备 33010602011771号