redis分布式锁-----基于redisson实现分布式锁

101 阅读2分钟

Redisson 是一个在 Redis 的基础上实现的 Java 驻留(in-memory)数据网格(In-Memory Data Grid)。它不仅提供了丰富的 Redis 客户端服务,如分布式锁和同步器,还提供了许多分布式 Java 对象和服务。下面是如何使用 Redisson 实现分布式锁的一个简单示例:

首先,你需要在你的项目中添加 Redisson 的依赖。如果你使用 Maven,你可以在你的 pom.xml 文件中添加以下依赖:

<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson</artifactId>
    <version>3.16.1</version> <!-- 请检查并使用最新版本 -->
</dependency>

Java代码示例:

import org.redisson.Redisson;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;

public class RedissonLockDemo {
    public static void main(String[] args) throws InterruptedException {
        // 1. 创建配置
        Config config = new Config();
        config.useSingleServer().setAddress("redis://127.0.0.1:6379"); // 使用单节点模式,设置 Redis 地址

        // 2. 创建 RedissonClient 实例
        RedissonClient redisson = Redisson.create(config);

        // 3. 获取一个分布式锁,lockName 是锁的名称
        RLock lock = redisson.getLock("myLock");

        // 4. 最常见的使用方法
        lock.lock();
        try {
            // 在这里执行需要同步的代码
            System.out.println("获得锁,执行同步代码...");
            Thread.sleep(3000);
        } finally {
            lock.unlock();
        }

        // 5. 关闭 RedissonClient 连接
        redisson.shutdown();
    }
}

在这个示例中,首先创建了一个 Config 对象并设置了 Redis 服务器的地址。然后,我们使用这个配置创建了一个 RedissonClient 实例。 接着,使用 RedissonClient 获取了一个名为 "myLock" 的分布式锁。在获取锁之后,执行了一些需要同步的代码,并在 finally 块中释放了锁。最后,关闭了 RedissonClient 的连接。

注意,上述代码中的锁名称 "myLock" 是自己定义的,可以根据实际需要来设置。另外,你需要确保你的 Redis 服务器正在运行,并且地址和端口是正确的。

Redisson 的分布式锁有很多高级特性,比如可重入锁、公平锁、读写锁、红锁(RedLock)等,你可以根据实际需要选择使用。同时,Redisson 还提供了很多其他的功能,比如分布式集合、分布式执行服务、分布式对象等。