Redisson分布式锁
可参考:www.it610.com/article/152985037452...
1、Redisson简介
Redis 是最流行的 NoSQL 数据库解决方案之一,而 Java 是世界上最流行(注意,没有说“最好”)的编程语言之一。虽然两者看起来很自然地在一起“工作”,但是要知道,Redis 其实并没有对 Java 提供原生支持。
相反,作为 Java 开发人员,我们若想在程序中集成 Redis,必须使用 Redis 的第三方库。而 Redisson 就是用于在 Java 程序中操作 Redis 的库,它使得我们可以在程序中轻松地使用 Redis。Redisson 在 java.util 中常用接口的基础上,为我们提供了一系列具有分布式特性的工具类。
Redisson底层采用的是Netty 框架。支持Redis 2.8以上版本,支持Java1.6+以上版本。
2、Redisson实现分布式锁的步骤
2.1.引入依赖
SpringBoot整合Redisson有个比较好用的starter包就是redisson-spring-boot-starter,这也是官方比较推荐的配置方式
引入redisson依赖
只需引入redisson-spring-boot-starter就可以了,不过这里需要注意springboot与redisson的版本,因为官方推荐redisson版本与springboot版本配合使用。版本不匹配会导致这种问题。
将 Redisson 与 Spring Boot 库集成。取决于Spring Data Redis模块,支持 Spring Boot 1.3.x - 2.4.x
这句话是官方说的,不过现在的2.5.x也是支持的,只需要注意springboot最低版本不要低于1.3.x即可。
redisson-spring-data与Spring Boot version的版本对应关系
redisson-spring-data module name | Spring Boot version |
---|---|
redisson-spring-data-16 | 1.3.x |
redisson-spring-data-17 | 1.4.x |
redisson-spring-data-18 | 1.5.x |
redisson-spring-data-20 | 2.0.x |
redisson-spring-data-21 | 2.1.x |
redisson-spring-data-22 | 2.2.x |
redisson-spring-data-23 | 2.3.x |
redisson-spring-data-24 | 2.4.x |
maven依赖
org.redisson
redisson-spring-boot-starter
3.17.1
点击redisson-spring-boot-starter进去
public class IndexController {
@Autowired(required = false)
private RedissonClient redissonClient;
@GetMapping("/index")
public String index() {
RLock tokenLock = redissonClient.getLock("tokenLock");
RBucket<String> name = redissonClient.getBucket("name");
name.set("zhangxiao");
tokenLock.lock();
try {
System.out.println("获取锁");
Thread.sleep(20000);
System.out.println("加锁成功,代码线程:" + Thread.currentThread().getName());
} catch (Exception ex) {
System.out.println("异常报错");
} finally {
tokenLock.unlock();
}
return "redisson is ok";
}
}
本作品采用《CC 协议》,转载必须注明作者和本文链接