您的位置:首页 > 数据库 > Redis

用redis实现分布式锁

2016-10-15 18:34 751 查看
redis官网说用redis实现分布式锁需要用RedLock算法,用Java语言实现RedLock算法的是redisson,在项目中引入该依赖包

<!-- https://mvnrepository.com/artifact/org.redisson/redisson -->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.5.5</version>
</dependency>


以下是个最简单的例子,涉及同步获得锁,同步释放锁(均有对应的异步方法)。可以通过类打点方式查看更多API方法。

可以查看redisson官方文档更多的了解redisson(不仅仅可以用来创建分布式锁,还有很多其他的功能),直接从redis官网讲分布式锁的那一部分就可以找到redisson的github地址。

public static void main(String[] args) {
RedissonClient redissonClient = null;
try {
// 默认连接地址 127.0.0.1:6379
Config config = new Config();
config.useSingleServer()
.setPassword("6503942ksR@")
.setAddress("redis://47.52.238.66:6379");
redissonClient = Redisson.create(config);
// 3. Get object you need
String lockName = "myLock12";

RLock rLock = redissonClient.getLock(lockName);
Long begin = System.currentTimeMillis();
rLock.tryLock(2, 60, TimeUnit.SECONDS);
System.out.println("cost " + (System.currentTimeMillis() - begin) + "ms");
boolean held = rLock.isHeldByCurrentThread();
if (held) {
System.out.println(11);
//            lock.unlock();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
redissonClient.shutdown(0, 1, TimeUnit.SECONDS);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: