[分享]redis increment实现分部署锁
  OIW0KlaMcRRl 2023年11月28日 24 0


@Autowired
private RedisTemplate redisTemplate;
 
/**
 * 加锁
 */
public boolean getLock(String key) {
	 try {
		 long count = redisTemplate.opsForValue().increment(key, 1);
		 if(count == 1){
			 //设置有效期2秒
			 redisTemplate.expire(key, 2, TimeUnit.SECONDS);
			 return true;
		 }else{
			 long time = redisTemplate.getExpire(key,TimeUnit.SECONDS);
			 if(time == -1){
				 //设置失败重新设置过期时间
				 redisTemplate.expire(key, 2, TimeUnit.SECONDS);
				 return true;
			 }
		 }
		 //如果存在表示重复
		 return false;
	 } catch (Exception e) {
		 logger.error("redis加锁异常", e);
		 redisTemplate.delete(key);		//出现异常删除锁
		 return true;
	 }
}


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月28日 0

暂无评论

推荐阅读