用redis实现分布式锁
2016-10-15 18:34
751 查看
redis官网说用redis实现分布式锁需要用RedLock算法,用Java语言实现RedLock算法的是redisson,在项目中引入该依赖包
以下是个最简单的例子,涉及同步获得锁,同步释放锁(均有对应的异步方法)。可以通过类打点方式查看更多API方法。
可以查看redisson官方文档更多的了解redisson(不仅仅可以用来创建分布式锁,还有很多其他的功能),直接从redis官网讲分布式锁的那一部分就可以找到redisson的github地址。
<!-- 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); } }
相关文章推荐
- 利用redis分布式锁的功能来实现定时器的分布式
- Redis实现分布式锁
- 基于Redis实现分布式锁
- Redis 上实现的分布式锁
- 利用redis(spring-data-redis)锁的功能来实现定时器的分布式
- 用Redis实现分布式锁
- 基于Redis实现分布式消息队列(3)
- 缓存篇~第七回 Redis实现基于方法签名的数据集缓存(可控更新,分布式数据缓存)
- [Node.js] Node + Redis 实现分布式Session方案
- 基于Redis实现分布式消息队列(1)
- 用 Redis 实现分布式锁
- Redis实现分布式环境下的分布式锁机制
- Redis实现分布式全局锁
- 使用redis实现分布式锁,可以解决集群中需要单例的情况
- scrapy-redis实现爬虫分布式爬取分析与实现
- Redis实现分布式锁
- 【Redis】 redis setnx命令实现分布式锁
- 用Redis实现分布式锁
- redis中使用java脚本实现分布式锁
- 基于Redis实现分布式消息队列(2)