美文网首页数据库
Redis实现分布式锁

Redis实现分布式锁

作者: 任嘉平生愿 | 来源:发表于2018-10-11 23:09 被阅读10次
    public class RedisLock1 {
    
        @Autowired
        RedisTemplate redisTemplate;
    
        public boolean lock(String key, String value) {
            if (redisTemplate.opsForValue().setIfAbsent(key, value)) {
                //获得锁
                return true;
            }
            String redisValue = (String) redisTemplate.opsForValue().get(key);
            if (!StringUtils.isEmpty(redisValue) && Long.valueOf(redisValue) <= System.currentTimeMillis()) {
                //锁过期
                String oldValue = (String) redisTemplate.opsForValue().getAndSet(key, value);
                if (!StringUtils.isEmpty(oldValue) && oldValue.equals(redisValue)) {
                    //防止不同的key进入
                    return true;
                }
            }
            //等待锁或者不同可以key进入
            return false;
        }
    }
    

    相关文章

      网友评论

        本文标题:Redis实现分布式锁

        本文链接:https://www.haomeiwen.com/subject/vgniaftx.html