
在 Java 分布式系统的开发中,Redis 几乎是标配。但在使用 Redis 时,你是否曾为了实现一个可靠的分布式锁而头疼?或者在处理分布式集合时感到无从下手?
通常我们使用的是 Jedis 或 Lettuce,它们更像是一层轻量级的 Redis 命令封装。而今天要介绍的 Redisson,则走了一条完全不同的道路:它将 Redis 的能力封装成了我们熟悉的 Java 对象。
Redisson 是一个在 Redis 基础上实现的 Java 驻内存数据网格(In-Memory Data Grid)。
set, get, hget)。
List, Map, Lock 一样简单。
特性 | Jedis | Lettuce | Redisson |
|---|---|---|---|
编程模型 | 直观、同步 | 基于 Netty,支持异步/响应式 | 基于 Netty,高度抽象化 |
线程安全 | 线程不安全(需连接池) | 线程安全 | 线程安全 |
核心优势 | 简单易上手,生态老牌 | 性能高,Spring Boot 默认 | 丰富的分布式锁与数据结构 |
在分布式环境下,synchronized 或 ReentrantLock 只能锁住当前 JVM 进程。Redisson 最出名的功能就是实现了符合 JUC (java.util.concurrent) 标准的分布式锁。
RLock lock = redisson.getLock("myLock");
try {
// 1. 尝试加锁,最多等待 100 秒,上锁后 10 秒自动解锁
boolean res = lock.tryLock(100, 10, TimeUnit.SECONDS);
if (res) {
// 核心业务逻辑
}
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
// 2. 释放锁
lock.unlock();
}分布式锁面临的最大挑战是:如果执行业务时间超过了锁的有效期,怎么办?
Redisson 引入了 Watchdog(看门狗) 机制来解决这个问题。
注意:只有在没有显式指定锁过期时间(leaseTime)的情况下,看门狗机制才会生效。
Redisson 不止有锁,它还提供了一系列“分布式版”的 JDK 集合:
AtomicLong。
要在项目中使用 Redisson,仅需简单几步:
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.23.2</version>
</dependency>在 application.yml 中配置:
spring:
redis:
host: 127.0.0.1
port: 6379Redisson 极大地降低了分布式系统的开发门槛。它通过封装复杂的底层逻辑(如 Lua 脚本实现原子性、看门狗自动续期等),让开发者能够专注于业务本身。
什么时候该选 Redisson?
感谢阅读!如果你觉得这篇文章对你有帮助,欢迎点赞收藏。