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();
    }
}

测试结果,运行截图:

Redisson Java整合入门实例_Redis

3. Redisson 的结构

Redisson作为独立节点 可以用于独立执行其他节点发布到分布式执行服务 和 分布式调度任务服务 里的远程任务。

Redisson Java整合入门实例_Redis_02