分布式锁

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分布式锁

 

posted @ 2022-04-19 10:28  =馨=星=  阅读(27)  评论(0)    收藏  举报