我是靠谱客的博主 壮观小蝴蝶,最近开发中收集的这篇文章主要介绍利用Redisson实现分布式锁,并防止重复提交1.依赖包2.Spring整合3.工具类,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

关于Redisson的基础概念,参照Redisson基础。

要想实现此功能需要以下几步:

1.依赖包

这里用的是jdk8+的版本

 <dependency>
      <groupId>org.redisson</groupId>
      <artifactId>redisson</artifactId>
      <version>3.3.2</version>
    </dependency>

2.Spring整合

注意设置schema文件

 <redisson:client id="redissonClient2">
     
        <redisson:single-server address="192.168.238.129:6379"/>
    </redisson:client>


3.工具类

默认锁

@Component
public class DistributedRedisLock implements InitializingBean {
	private static final Logger _log = Logger.getLogger(DistributedRedisLock.class);
	@Autowired
	private RedissonClient redissonClient;
	public static Redisson redisson;
	
	/**
	 * 获取默认锁
	 */
	public static RLock acquireLock(String lockName) {
		RLock fairLock = redisson.getLock(lockName);
		fairLock.lock();// 手动去解锁
		_log.info("锁 - " + lockName + "获取成功"); return fairLock;
	}
	
	/**
	 * 释放默认锁
	 */
	public static void realeaseLock(RLock fairLock) {
		fairLock.unlock();	
	}
	@Override
	public void afterPropertiesSet() throws Exception {
		redisson = (Redisson) redissonClient;
		_log.info(redisson.getConfig().toJSON());
	}
}


如何防止重复呢?

/**
	 * 存入分布式set对象中
	 * @param name
	 * @param value
	 * @return
	 */
	public RSet<String> setSet(String name, String value){
		RSet<String> set = redisson.getSet(name);
		set.add(value);
		return  set;
	}

	/**
	 * 检查分布式对象是否存在
	 * @param name
	 * @return
	 */
	public Boolean existSet(String name){
		RSet<String> set = redisson.getSet(name);
		if (!set.isEmpty()) {
			return  true;
		}
		return  false;
	}



调用代码:

	String lockname="lockname";
		
	RLock fairLock=DistributedRedisLock.acquireLock(lockname);
 try {//不存在设置到redis
if (!DistributedRedisLock.existSet(lockname)) {
DistributedRedisLock.setSet(lockname, "1111");
//业务逻辑begin
} else {
//redis中有则不处理业务逻辑
}
}finally {
DistributedRedisLock.realeaseLock(fairLock);
}

最后

以上就是壮观小蝴蝶为你收集整理的利用Redisson实现分布式锁,并防止重复提交1.依赖包2.Spring整合3.工具类的全部内容,希望文章能够帮你解决利用Redisson实现分布式锁,并防止重复提交1.依赖包2.Spring整合3.工具类所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部