🚀 Redisson 入门教程:Redis 分布式工具包的实战指南
一、Redisson 是什么?
在 Java 开发中,Redis 常被用来做 缓存、分布式锁、限流、消息队列 等功能。
但是如果直接用 Jedis 或 Lettuce,这些功能需要你自己封装逻辑,很容易出错。
👉 这时 Redisson 就出现了:
- 它是一个 基于 Redis 的 Java 工具包。
- 封装了很多 分布式常用功能,开箱即用。
- 支持 分布式锁、集合、限流器、队列 等。
一句话:Redisson = Redis + Java 常用分布式功能工具库。
二、为什么要用 Redisson?
如果你用 Redis 主要是缓存,那 Spring Data Redis 足够了。
但如果要做分布式场景,比如:
- 下单时加分布式锁
- 接口调用做限流
- 多节点队列消费
👉 用 Redisson 可以省去大量重复造轮子的工作。
三、快速开始:集成 Redisson
1. 添加依赖
Maven 项目里加入:
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.30.0</version> <!-- 建议用最新稳定版 -->
</dependency>
2. 配置单节点连接
Spring Boot 项目里,一般写个配置类:
@Configuration
public class RedissonConfig {
@Bean
public RedissonClient redissonClient() {
Config config = new Config();
// 单节点模式
config.useSingleServer()
.setAddress("redis://127.0.0.1:6379")
.setPassword("你的Redis密码(没有可以不写)");
return Redisson.create(config);
}
}
Redisson 还支持集群模式、哨兵模式,这里先不展开,初学者用单节点即可。
四、常见功能示例
1. 分布式锁
模拟抢单、库存扣减场景:
@Autowired
private RedissonClient redissonClient;
public void testLock() {
// 获取锁对象
RLock lock = redissonClient.getLock("orderLock");
try {
// 加锁(默认30s超时自动释放,避免死锁)
lock.lock();
System.out.println("执行业务逻辑:扣减库存");
Thread.sleep(2000); // 模拟耗时操作
} catch (Exception e) {
e.printStackTrace();
} finally {
// 释放锁
lock.unlock();
}
}
👉 使用 RLock 就可以轻松实现 分布式锁。
2. 分布式集合
Redisson 封装了 List、Set、Map 等分布式集合。
RMap<String, String> map = redissonClient.getMap("myMap");
map.put("k1", "v1");
map.put("k2", "v2");
System.out.println(map.get("k1")); // 输出 v1
就像用 Java 的 Map,但它的数据实际存 Redis。
3. 限流器
比如限制接口 QPS。
RRateLimiter rateLimiter = redissonClient.getRateLimiter("apiLimiter");
// 初始化:每秒最多10个请求
rateLimiter.trySetRate(RateType.OVERALL, 10, 1, RateIntervalUnit.SECONDS);
if (rateLimiter.tryAcquire()) {
System.out.println("获取到令牌,可以访问接口");
} else {
System.out.println("被限流,稍后再试");
}
4. 分布式队列
可以做简单的消息队列。
RQueue<String> queue = redissonClient.getQueue("msgQueue");
// 生产消息
queue.add("msg1");
queue.add("msg2");
// 消费消息
String msg = queue.poll();
System.out.println("消费消息:" + msg);
五、使用 Redisson 的注意事项
-
锁的 key 要区分业务
不要所有请求都用同一个 key,比如"lock",要加上业务标识,例如"lock:order:" + userId。 -
不要忘记 finally 解锁
避免异常导致锁一直不释放。 -
合理设置超时时间
lock.lock(10, TimeUnit.SECONDS)方式,可以手动指定超时释放。 -
性能问题
Redisson 功能很多,但性能比原生Lettuce稍低。如果只是做缓存查询,推荐Spring Data Redis,锁/队列/限流再用 Redisson。
六、总结
- Redisson 是 Redis 的 Java 工具包,提供丰富的分布式功能。
- 初学者只需掌握 连接配置 → 分布式锁 → 集合/限流/队列 就够用了。
- 开发中可以结合
Spring Data Redis + Redisson:缓存用前者,分布式工具用后者。
📝 学完本篇,你就能用 Redisson 实现最常见的 分布式锁、限流、队列,以后再深入研究集群配置、RTopic 发布订阅等更高级功能。
302

被折叠的 条评论
为什么被折叠?



