Redisson 是架设在 Redis 基础上的一个 Java 驻内存数据网格(In-Memory Data Grid)。
Redisson 在基于 NIO 的 Netty 框架上,生产环境使用分布式锁。
加入 jar 包的依赖
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>2.7.0</version>
</dependency>
配置 Redisson
package com.galaxy.redision;
import org.redisson.Redisson;
import org.redisson.config.Config;
/**
* @author lane
* @date 2021年08月06日 下午3:05
*/
public class RedissonManager {
private static Config config = new Config(); //声明redisso对象
private static Redisson redisson = null;
//实例化redisson
static {
config.useClusterServers()
// 集群状态扫描间隔时间,单位是毫秒
.setScanInterval(2000)
//cluster方式至少6个节点(3主3从,3主做sharding,3从用来保证主宕机后可以高可用)
.addNodeAddress("redis://127.0.0.1:6379")
.addNodeAddress("redis://127.0.0.1:6380")
.addNodeAddress("redis://127.0.0.1:6381")
.addNodeAddress("redis://127.0.0.1:6382")
.addNodeAddress("redis://127.0.0.1:6383")
.addNodeAddress("redis://127.0.0.1:6384");
//得到redisson对象
redisson = (Redisson) Redisson.create(config);
}
//获取redisson对象的方法
public static Redisson getRedisson(){ return redisson; } }
业务逻辑中使用分布式锁
2221package com.galaxy.redision;
import java.io.IOException;
/**
* 业务逻辑中使用分布式锁
* @author lane
* @date 2021年08月06日 下午3:23
*/
public class UseRedision {
public String discount() throws IOException {
String key = "lock001";
//加锁
DistributedRedisLock.acquire(key);
//执行具体业务逻辑
System.out.println("执行业务逻辑成功");
// 释放锁
DistributedRedisLock.release(key);
//返回结果
return "soming";
}
}