1. 概述
Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。
它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。其中包括(BitSet, Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore, Lock, AtomicLong, CountDownLatch, Publish / Subscribe, Bloom filter, Remote service, Spring cache, Executor service, Live Object service, Scheduler service) Redisson提供了使用Redis的最简单和最便捷的方法。
Redisson的宗旨是促进使用者对Redis的关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。
中文官方文档链接:https://github.com/redisson/redisson/wiki/1.-%E6%A6%82%E8%BF%B0
2. Java 整合实例
2.1 安装并启动Redis
CentOS7 下载、安装并运行 Redis
2.2 代码实例
创建一个 Maven 工程,引入 Redisson 依赖,pom.xml 如下所示,也引入了 netty,是因为 Redisson 底层使用的 Netty框架:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.syrdbt</groupId>
<artifactId>redisson-study</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.13.6</version>
</dependency>
</dependencies>
</project>
Java 代码实例,Test.java :
import org.redisson.Redisson;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import java.util.concurrent.TimeUnit;
/**
* @author syrdbt
* @date 2020-11-20
*/
public class Test {
public static void main(String[] args) {
// 默认连接上127.0.0.1:6379
RedissonClient client = Redisson.create();
// 一个分布式锁,指明锁的名称
RLock rLock = client.getLock("lockName");
try {
rLock.tryLock(10, 30, TimeUnit.SECONDS);
} catch (InterruptedException e) {
throw new RuntimeException("获取锁失败~~~");
}
try {
System.out.println("获取锁成功~~~");
for (int i=1; i<=10; i++) {
System.out.println("执行任务中...");
}
} catch (Exception e) {
throw new RuntimeException("任务执行失败");
} finally {
// 释放锁
System.out.println("释放锁成功~~~");
rLock.unlock();
}
client.shutdown();
}
}
测试结果,运行截图:
3. Redisson 的结构
Redisson作为独立节点 可以用于独立执行其他节点发布到分布式执行服务 和 分布式调度任务服务 里的远程任务。