redis和redission的区别

Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色:

  1. Redis: 内存数据库/数据结构存储

    • 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。

    • 核心功能: 提供丰富的数据结构(字符串、哈希、列表、集合、有序集合、位图、HyperLogLogs、地理空间索引、流等)及其操作命令。

    • 用途:

      • 缓存(加速数据访问)

      • 会话存储

      • 消息队列(使用列表或发布/订阅)

      • 排行榜(使用有序集合)

      • 实时分析

      • 分布式锁(需要自己组合命令实现,如 SETNX)

      • 作为主数据库或辅助数据库

    • 定位: 存储引擎。它是数据实际存储和处理的地方。

  2. Redisson: Java 的 Redis 客户端和分布式服务框架

    • 本质: 它是一个用 Java 编写的、功能丰富的 客户端库,用于连接和操作 Redis 服务器。但它远不止于一个简单的客户端。

    • 核心功能:

      • 连接管理: 提供强大的、可配置的连接池和连接管理。

      • Redis 命令封装: 以 Java 对象(RListRMapRSetRScoredSortedSet 等)的形式,提供对 Redis 所有数据结构和命令的自然映射。开发者使用 Java 集合接口就能操作 Redis。

      • 分布式对象和服务: 这是 Redisson 最强大的部分。它基于 Redis 实现了多种分布式 Java 对象和服务:

        • 分布式锁 (RLock): 可重入锁、公平锁、联锁、红锁等,比用原生 Redis 命令实现更健壮、更方便。

        • 分布式同步器: 信号量 (RSemaphore)、闭锁 (RCountDownLatch)、可过期信号量 (RPermitExpirableSemaphore)。

        • 分布式集合: 多值映射 (RMultimap)、集合缓存 (RSetCache)、列表缓存 (RListCache)、映射缓存 (RMapCache)。

        • 分布式消息队列: 基于 Redis 的阻塞队列 (RBlockingQueue)、延迟队列 (RDelayedQueue)、主题(发布/订阅)。

        • 分布式执行服务: 远程服务 (RRemoteService)、执行器服务 (RExecutorService)。

        • 分布式实时对象 (RLiveObject): 自动将 Java 对象映射到 Redis。

        • Bloom Filter (RBloomFilter): 分布式布隆过滤器。

        • HyperLogLog (RHyperLogLog)

      • 异步与响应式支持: 提供 Async 接口和 Reactive (RxJava2/3, Project Reactor) 接口。

      • Redis 集群/哨兵/主从支持: 内置对 Redis 各种部署模式的支持。

      • Spring 集成: 提供与 Spring Cache, Spring Data Redis, Spring Session 等的良好集成。

    • 定位: 客户端库 + 分布式中间件框架。它让你用 Java 以更高级、更符合 Java 习惯的方式(尤其是利用分布式对象)去使用 Redis,并在分布式环境中提供线程安全的操作。

关键区别总结:

特性RedisRedisson
本质数据库/存储引擎Java 客户端库 + 分布式服务框架
做什么存储数据、执行命令连接 Redis、封装命令、提供分布式 Java 对象和服务
角色服务器端 (Server)客户端库 (Client Library)
核心价值高性能内存数据结构存储简化 Java 访问 Redis、提供分布式编程抽象
主要接口Redis CLI / 各种语言的低级客户端命令丰富的 Java 对象 (RMapRLockRQueue 等)
分布式能力本身是单点;集群模式提供分布式存储能力基于 Redis 构建分布式 Java 对象和同步机制
使用场景需要键值存储、缓存、队列等基础设施的地方Java 应用中需要方便、健壮地使用 Redis 和分布式服务的地方
关系基础 - 提供存储和核心能力上层封装 - 让 Java 应用更优雅、高效地利用 Redis

简单类比:

  • Redis 就像是一个功能强大的仓库(存储各种货物/数据)。

  • Redisson 就像是:

    • 一个给 Java 程序员用的、专门操作这个仓库的高级叉车和自动化管理系统(连接管理、数据操作封装)。

    • 并且在这个仓库的基础上,搭建了一个分布式协作平台(分布式锁、信号量、队列等服务),让不同的 Java 程序(工人)可以安全、协调地在这个仓库里工作。

结论:

  • 没有 Redis,Redisson 就没有存在的基础。

  • Redisson 极大地简化了 Java 开发者使用 Redis 的复杂度,尤其是在需要实现分布式协调、同步和高级数据结构的场景下。它避免了开发者直接处理底层的 Redis 命令组合、连接管理、线程安全和分布式算法实现的复杂性。

  • 不会在 Redis 和 Redisson 之间二选一。你需要 Redis 服务器来运行,然后在你的 Java 应用中选择使用哪个客户端库来连接它。Redisson 是其中一个功能极其强大且专注于分布式服务的 Java 客户端选择(其他常见的有 Jedis, Lettuce)。

所以,当你在项目中看到 Redisson,它意味着开发者正在使用一个高级的 Java 库来更方便、更可靠地利用 Redis 作为存储,并且很可能在利用它提供的分布式服务(如分布式锁)来构建分布式应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/news/908936.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AIStarter 4.0 苹果版体验评测|轻松部署 ComfyUI 与 DeepSeek 的 AI 工具箱

最近在测试一款名为 AIStarter 4.0 的 AI 工具管理平台,主要用于在 Mac 系统上快速部署各类开源 AI 项目,如 ComfyUI 和 DeepSeek ,非常适合开发者、设计师及 AI 入门者使用。 通过简单的拖拽操作即可完成安装,支持普通下载与网盘…

ArcGIS Pro 3.4 二次开发 - 图形图层

环境:ArcGIS Pro SDK 3.4 + .NET 8 文章目录 图形图层1.1 创建图形图层1.2 访问GraphicsLayer1.3 复制图形元素1.4 移除图形元素2 创建图形元素2.1 使用CIMGraphic创建点图形元素2.2 使用CIMGraphic创建线图元素2.3 使用 CIMGraphic 的多边形图形元素2.4 使用CIMGraphic创建多…

《广度优先搜索》题集

1、模板题集 聚合一块 2、课内题集 寻找图中是否存在路径 钥匙和房间 受限条件下可到达节点的数目 3、课后题集 最少操作数 社交网络新来的朋友 Ignatius and the Princess I Collect More Jewels Gap Nightmare Remainder Ferry Loading III 连连看 诡异的楼梯 Open the …

界面组件DevExpress WPF中文教程:Grid - 如何获取行句柄?

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

零跑汽车5月交付45067台车,同比增长超148%

零跑汽车在5月交付新车45,067辆,同比大增148%,连续5个月实现单月交付量增长,稳居新势力交付量第一位置。今年1-5月,零跑累计交付新车达173,658辆,展现出强劲的市场竞争力和产品实力。 根据Q1财报,零跑不仅营…

netty中的粘包问题详解

一起来学netty 一、粘包问题的本质二、粘包问题的成因三、Netty中的解决方案1. 固定长度解码器(FixedLengthFrameDecoder)2. 行分隔符解码器(LineBasedFrameDecoder)3. 分隔符解码器(DelimiterBasedFrameDecoder)4. 长度字段解码器(LengthFieldBasedFrameDecoder)四、解…

【基础算法】枚举(普通枚举、二进制枚举)

文章目录 一、普通枚举1. 铺地毯(1) 解题思路(2) 代码实现 2. 回文日期(1) 解题思路思路一:暴力枚举思路二:枚举年份思路三:枚举月日 (2) 代码实现 3. 扫雷(2) 解题思路(2) 代码实现 二、二进制枚举1. 子集(1) 解题思路(2) 代码实现 2. 费解的…

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…

学习日记-day24-6.8

完成内容&#xff1a; 知识点&#xff1a; 1.网络编程_TCP编程 ### 编写客户端1.创建Socket对象,指明服务端的ip以及端口号 2.调用socket中的getOutputStream,往服务端发送请求 3.调用socket中的getInputStream,读取服务端响应回来的数据 4.关流public class Client {public…

JavaScript 核心对象深度解析:Math、Date 与 String

JavaScript 作为 Web 开发的核心语言&#xff0c;提供了丰富的内置对象来简化编程工作。本文将深入探讨三个重要的内置对象&#xff1a;Math、Date 和 String&#xff0c;通过详细的代码示例和综合案例帮助你全面掌握它们的用法。 一、Math 对象 Math 对象提供了一系列静态属…

HarmonyOS开发:设备管理使用详解

目录 前言 设备管理概述 设备管理组成 1、电量信息 &#xff08;1&#xff09;导入模块 &#xff08;2&#xff09;属性信息 &#xff08;3&#xff09;常用属性 &#xff08;4&#xff09;使用示例 2、设备信息 &#xff08;1&#xff09;导入模块 &#xff08;2&a…

el-select下拉框 添加 el-checkbox 多选框

效果 vue <el-select v-model"value" multiple style"width: 100%" popper-class"select-popover-class" placeholder"请选择试验项目"><el-option v-for"item in options" :key"item.value" :value&qu…

Memory Repair (三)

Top-Level Verification and Pattern Generation 本节涵盖 fuse box 编程、顶层 BISR&#xff08;内置自修复&#xff09;验证以及生产测试 pattern 的生成 Fuse Box Programming 通过 BISR controller 对 fuse box 进行编程的两种方法如下&#xff1a; • 采用 Autonomous mod…

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…

谷歌aab怎么转 apk

一、环境搭建&#xff1a; 1、搭建 java 环境&#xff1b;2、安装 AndroidStudio&#xff1b;3、下载 bundletool&#xff08;地址&#xff1a;Releases google/bundletool GitHub&#xff09;&#xff1b;4、确定本地有没有签名文件&#xff0c;mac电脑一般在/users/ 自己的…

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…

AWS EKS 集群日志上报观测云实践

AWS Lambda 介绍 AWS Lambda 是亚⻢逊提供的⼀种⽆服务器计算服务。它允许开发⼈员在⽆需管理服务器的情况下运⾏代码。AWS Lambda 基于事件驱动的模型&#xff0c;当触发指定的事件时&#xff0c;Lambda 会⾃动执⾏相应的代码逻辑。 Amazon CloudWatch 日志 CloudWatch 日志…

浏览器指纹科普 | 端口扫描保护是什么?

&#x1f50d; 什么是“端口”&#xff1f; 每台电脑都像一个办公大楼&#xff0c;端口就像是不同的房间号。不同软件&#xff08;比如浏览器、代理、远程控制工具&#xff09;会用不同的端口来“对外沟通”。 比如&#xff1a; 浏览网页可能用端口 80 或 443 用代理软件或某…

傲软录屏:轻松录制,高效分享

在数字内容创作和在线教育日益流行的今天&#xff0c;屏幕录制已成为许多人表达创意、分享知识的重要方式。无论是制作教学视频、记录游戏过程&#xff0c;还是进行远程会议记录&#xff0c;一款简单易用且功能强大的屏幕录制软件都是不可或缺的。傲软录屏正是这样一款能够满足…