当前位置: 首页 > news >正文

Redission是什么

Redisson 是一个基于 Redis 的 Java 客户端库,本质是 Redis 的高级封装框架。它在原生 Redis 命令之上构建了分布式、高性能的 Java 对象和服务,核心目标是 ​让开发者以操作本地对象的方式操作分布式系统


一、核心定位与特点

特性

说明

分布式对象

将 Java 对象映射到 Redis(如 RMapRAtomicLong,支持跨 JVM 访问)

分布式锁

内置高可用锁 RLock,支持可重入、超时释放、红锁(RedLock)

多级缓存

支持本地缓存(JVM内) + Redis 集群的多级缓存策略

响应式编程

集成 Reactor、RxJava 支持异步非阻塞操作

分布式服务

提供布隆过滤器、限流器、调度任务等分布式能力

协议兼容性

支持 Redis 单机、哨兵、集群、云托管(AWS/Azure)等部署模式


二、解决什么问题?

  1. 分布式协调问题

    • 原生 Redis 实现分布式锁需手写 Lua 脚本(易出错),Redisson 直接提供线程安全的 lock.lock()

  2. 开发效率问题

    • 原生 Redis 操作需拼接命令(如 HSETEXPIRE),Redisson 封装为类似 JDK 标准接口:

      RMap<String, Object> map = redisson.getMap("myMap");
      map.put("key", "value"); // 自动执行 HSET
      map.expire(10, TimeUnit.SECONDS); // 自动追加 EXPIRE
  3. 分布式系统复杂性问题

    • 提供开箱即用的分布式集合(Set/List)、原子长整型(AtomicLong)、发布订阅等能力。


三、核心功能示例

1. ​分布式锁(自动续期+可重入)​
RLock lock = redisson.getLock("orderLock");
try {if (lock.tryLock(5, 30, TimeUnit.SECONDS)) { // 尝试获取锁,超时30秒自动释放// 业务操作(如库存扣减)stock--;}
} finally {lock.unlock(); // 释放锁
}

✅ ​对比原生 Lua 脚本方案​:无需手写 SET key NX EX+ 重试机制 + 续期逻辑。

2. ​分布式原子操作
RAtomicLong counter = redisson.getAtomicLong("userCounter");
long id = counter.incrementAndGet(); // 原子递增生成用户ID

✅ ​对比原生 Redis​:替代 INCR命令,避免线程安全问题。

3. ​多级缓存(本地缓存加速热点读)​
LocalCachedMapOptions<String, Product> options = LocalCachedMapOptions.defaults().cacheProvider(CacheProvider.J2CACHE) // 使用Caffeine本地缓存.expirePolicy(ExpirePolicy.ON_WRITE)   // 写后10秒失效.timeToLive(10, TimeUnit.SECONDS);RMapCache<String, Product> productCache = redisson.getLocalCachedMap("products", options);
Product p = productCache.get("product_1001"); // 优先读本地缓存

✅ ​性能提升​:热点数据读操作速度提升 10x 以上(JVM 内存级访问)。


四、架构优势(对比原生 Redis 客户端)

维度

Jedis / Lettuce

Redisson

编程模型

基于命令(类似 SQL 语句)

基于分布式对象​(类似 JDK 集合框架)

锁实现

需自行实现(Lua脚本)

内置 RLockRReadWriteLock等完整锁体系

容错能力

需手动处理重试/故障转移

自动重试、主从切换、集群拓扑刷新

性能优化

连接池、批处理需自研

内置 RBatch命令合并、线程池优化

学习成本

需深入理解 Redis 命令

Java 开发者 ​5 分钟上手


五、典型应用场景

  1. 分布式锁

    • 秒杀库存扣减、订单超时控制。

  2. 实时数据缓存

    • 商品详情页(本地缓存 + Redis 双重加速)。

  3. 任务调度

    • 分布式延迟队列(RDelayedQueue)。

  4. 服务限流

    • 基于令牌桶的 RRateLimiter

  5. 分布式计算

    • 使用 RExecutorService执行跨节点任务。


六、性能数据(参考)

场景

QPS(单节点)

平均耗时

对比原生 Redis

分布式锁获取

50,000+

0.5ms

快 3x

热点数据读(带本地缓存)​

200,000+

0.1ms

快 20x

批量写入(RBatch)​

100,000+

2ms

快 5x

✅ ​适用系统规模​:日均亿级请求、毫秒级响应的中大型分布式系统(如电商平台、金融交易系统)。


总结

Redisson = Redis + Java 分布式编程模型,通过将分布式系统问题抽象为本地对象操作:

  1. 提升效率​:省去 70% 的低级 Redis 命令拼接代码;

  2. 增强可靠性​:内置容错、重试、锁续期等生产级特性;

  3. 扩展能力​:提供分布式集合/锁/队列等开箱即用的解决方案。

👉 ​一句话理解​:如果你在 Java 项目中用 Redis,Redisson 能让分布式开发像写单机应用一样简单高效。

http://www.dtcms.com/a/338895.html

相关文章:

  • 低延迟、跨平台与可控性:直播SDK的模块化价值解析
  • 探访隐形冠军|安贝斯携手武汉科创协会x深钣协“湖北行”,溯源南海光电的创新密码
  • Qt个人通讯录项目开发教程 - 从零开始构建联系人管理系统
  • 【运维进阶】Ansible 角色管理
  • 【自动化运维神器Ansible】Playbook调用Role详解:从入门到精通
  • 数字孪生 :提高制造生产力的智能方法
  • 红日靶场03
  • 【Qt】 数据库连接池
  • B站 韩顺平 笔记 (Day 23)
  • LG P3710 方方方的数据结构 Solution
  • 【Qt开发】常用控件(五)
  • DzzOffice版权信息修改教程
  • 遥感amp;机器学习入门实战教程 | Sklearn 案例③:PCA + SVM / 随机森林 对比与调参
  • CSDN 创始人蒋涛:以开源驱动技术创新,拥抱黄金十年
  • LeetCode100-560和为K的子数组
  • 开源 C++ QT Widget 开发(二)基本控件应用
  • leetcode_ 76 最小覆盖子串
  • 决策树(续)
  • 大数据技术栈 —— Redis与Kafka
  • 字符串与算法题详解:最长回文子串、IP 地址转换、字符串排序、蛇形矩阵与字符串加密
  • 磨砂玻璃登录页面使用教程 v0.1.1
  • 【Linux仓库】进程创建与进程终止【进程·柒】
  • 通过C#上位机串口写入和读取浮点数到stm32的片内flash实战4(通过串口下发AD9833设置值并在上位机显示波形曲线)
  • 基于单片机智能点滴输液系统
  • 元素的width和offsetWidth有什么区别
  • java八股文-中间件-参考回答
  • Win11家庭版docker安装MaxKB
  • 【论文阅读】DETR3D: 3D Object Detection from Multi-view Images via 3D-to-2D Queries
  • 边缘智能体:Go编译在医疗IoT设备端运行轻量AI模型(中)
  • 【HTML】3D动态凯旋门