Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >redis几种java客户端比较

redis几种java客户端比较

作者头像
山行AI
发布于 2019-09-09 09:23:32
发布于 2019-09-09 09:23:32
21.1K0
举报
文章被收录于专栏:山行AI山行AI

jedis、redisson、lettuce

概况

  • Jedis是RedisJava实现的客户端,其API提供了比较全面的Redis命令的支持;
  • Jedis中的方法调用是比较底层的暴露的Redis的API,也即Jedis中的Java方法基本和Redis的API保持着一致,了解Redis的API,也就能熟练的使用Jedis。
  • Redisson实现了分布式和可扩展的Java数据结构,提供很多分布式相关操作服务,例如,分布式锁,分布式集合,可通过Redis支持延迟队列。和Jedis相比,功能较为简单,不支持字符串操作,不支持排序、事务、管道、分区等Redis特性。Redisson的宗旨是促进使用者对Redis的关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。
  • Redisson中的方法则是进行比较高的抽象,每个方法调用可能进行了一个或多个Redis方法调用。
  • Lettuce:高级Redis客户端,用于线程安全同步,异步和响应使用,支持集群,Sentinel,管道和编码器。目前springboot默认使用的客户端。

伸缩性:

  • Jedis:使用阻塞的I/O,且其方法调用都是同步的,程序流需要等到sockets处理完I/O才能执行,不支持异步。Jedis客户端实例不是线程安全的,所以需要通过连接池来使用Jedis。
  • Jedis仅支持基本的数据类型如:String、Hash、List、Set、Sorted Set。
  • Redisson:基于Netty框架的事件驱动的通信层,其方法调用是异步的。Redisson的API是线程安全的,所以可以操作单个Redisson连接来完成各种操作。
  • Redisson不仅提供了一系列的分布式Java常用对象,基本可以与Java的基本数据结构通用,还提供了许多分布式服务,其中包括(BitSet, Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore, Lock, AtomicLong, CountDownLatch, Publish / Subscribe, Bloom filter, Remote service, Spring cache, Executor service, Live Object service, Scheduler service)。
  • Lettuce:基于Netty框架的事件驱动的通信层,其方法调用是异步的。Lettuce的API是线程安全的,所以可以操作单个Lettuce连接来完成各种操作。

说说Redission特性

详见: https://github.com/redisson/redisson/wiki/%E7%9B%AE%E5%BD%95

功能说明如下:

  • 1. 概述
  • 2. 配置方法
    • 2.8.1. 主从模式设置
    • 2.8.2. 通过JSON、YAML和Spring XML文件配置主从模式
    • 2.7.1. 哨兵模式设置
    • 2.7.2. 通过JSON、YAML和Spring XML文件配置哨兵模式
    • 2.6.1. 单节点设置
    • 2.6.2. 通过JSON、YAML和Spring XML文件配置单节点模式
    • 2.5.1. 云托管模式设置
    • 2.5.2. 通过JSON、YAML和Spring XML文件配置云托管模式
    • 2.4.1. 集群设置
    • 2.4.2. 通过JSON、YAML和Spring XML文件配置集群模式
    • 2.2.1 通过JSON或YAML格式配置
    • 2.2.2 通过Spring XML命名空间配置
    • 2.1. 程序化配置
    • 2.2. 文件方式配置
    • 2.3. 常用设置
    • 2.4. 集群模式
    • 2.5. 云托管模式
    • 2.6. 单Redis节点模式
    • 2.7. 哨兵模式
    • 2.8. 主从模式
  • 3. 程序接口调用方式
    • 3.1. 异步执行方式
    • 3.2. 异步流执行方式
  • 4. 数据序列化
  • 5. 单个集合数据分片(Sharding)
  • 6. 分布式对象
    • 6.8.1. 数据分片(Sharding)
    • 6.7.1. 模糊话题
    • 6.4.1. 数据分片(Sharding)(分布式RoaringBitMap)
    • 6.1. 通用对象桶(Object Bucket)
    • 6.2. 二进制流(Binary Stream)
    • 6.3. 地理空间对象桶(Geospatial Bucket)
    • 6.4. BitSet
    • 6.5. 原子整长形(AtomicLong)
    • 6.6. 原子双精度浮点(AtomicDouble)
    • 6.7. 话题(订阅分发)
    • 6.8. 布隆过滤器(Bloom Filter)
    • 6.9. 基数估计算法(HyperLogLog)
    • 6.10. 整长型累加器(LongAdder)
    • 6.11. 双精度浮点累加器(DoubleAdder)
    • 6.12. 限流器(RateLimiter)
  • 7. 分布式集合
    • 7.3.1. 集(Set)淘汰机制(Eviction)
    • 7.3.2. 集(Set)数据分片(Sharding)
    • 7.2.1. 基于集(Set)的多值映射(Multimap)
    • 7.2.2. 基于列表(List)的多值映射(Multimap)
    • 7.2.3. 多值映射(Multimap)淘汰机制(Eviction)
    • 7.1.1. 映射(Map)的元素淘汰(Eviction),本地缓存(LocalCache)和数据分片(Sharding)
    • 7.1.2. 映射持久化方式(缓存策略)
    • 7.1.3. 映射监听器(Map Listener)
    • 7.1.4. LRU有界映射
    • 7.1. 映射(Map)
    • 7.2. 多值映射(Multimap)
    • 7.3. 集(Set)
    • 7.4. 有序集(SortedSet)
    • 7.5. 计分排序集(ScoredSortedSet)
    • 7.6. 字典排序集(LexSortedSet)
    • 7.7. 列表(List)
    • 7.8. 队列(Queue)
    • 7.9. 双端队列(Deque)
    • 7.10. 阻塞队列(Blocking Queue)
    • 7.11. 有界阻塞队列(Bounded Blocking Queue)
    • 7.12. 阻塞双端队列(Blocking Deque)
    • 7.13. 阻塞公平队列(Blocking Fair Queue)
    • 7.14. 阻塞公平双端队列(Blocking Fair Deque)
    • 7.15. 延迟队列(Delayed Queue)
    • 7.16. 优先队列(Priority Queue)
    • 7.17. 优先双端队列(Priority Deque)
    • 7.18. 优先阻塞队列(Priority Blocking Queue)
    • 7.19. 优先阻塞双端队列(Priority Blocking Deque)
  • 8. 分布式锁(Lock)和同步器(Synchronizer)
    • 8.1. 可重入锁(Reentrant Lock)
    • 8.2. 公平锁(Fair Lock)
    • 8.3. 联锁(MultiLock)
    • 8.4. 红锁(RedLock)
    • 8.5. 读写锁(ReadWriteLock)
    • 8.6. 信号量(Semaphore)
    • 8.7. 可过期性信号量(PermitExpirableSemaphore)
    • 8.8. 闭锁(CountDownLatch)
  • 9. 分布式服务
    • 9.5.1. 介绍
    • 9.5.2. 映射(Map)类型的使用范例
    • 9.5.3. 集合(Collection)类型的使用范例
    • 9.4.1. 分布式调度任务服务概述
    • 9.4.2. 设定任务计划
    • 9.4.3. 通过CRON表达式设定任务计划
    • 9.4.4. 取消计划任务
    • 9.3.1. 分布式执行服务概述
    • 9.3.2. 任务
    • 9.3.3. 取消任务
    • 9.2.1. 介绍
    • 9.2.2. 使用方法
    • 9.2.3. 高级使用方法
    • 9.2.4. 注解(Annotation)使用方法
    • 9.2.5. 使用限制
    • 9.1.1. 分布式远程服务工作流程
    • 9.1.2. 发送即不管(Fire-and-Forget)模式和应答回执(Ack-Response)模式
    • 9.1.3. 异步调用
    • 9.1.4. 取消异步调用
    • 9.1. 分布式远程服务(Remote Service)
    • 9.2. 分布式实时对象(Live Object)服务
    • 9.3. 分布式执行服务(Executor Service)
    • 9.4. 分布式调度任务服务(Scheduler Service)
    • 9.5. 分布式映射归纳服务(MapReduce
  • 10. 额外功能
    • 10.1. 对Redis节点的操作
    • 10.2. 复杂多维对象结构和对象引用的支持
    • 10.3. 命令的批量执行
    • 10.4. 脚本执行
    • 10.5. 底层Redis客户端
  • 11. Redis命令和Redisson对象匹配列表
  • 12. 独立节点模式
    • 12.2.1. 配置参数
    • 12.2.2. 通过JSON和YAML配置文件配置独立节点
    • 12.1. 概述
    • 12.2. 配置方法
    • 12.3. 初始化监听器
    • 12.4. 嵌入式运行方法
    • 12.5. 命令行运行方法
    • 12.6. Docker方式运行方法
  • 13. 工具
    • 13.1.1. 创建集群
    • 13.1.2. 踢出节点
    • 13.1.3. 数据槽迁移
    • 13.1.4. 添加从节点
    • 13.1.5. 添加主节点
    • 13.1. 集群管理工具
  • 14. 第三方框架整合
    • 14.3.1. 本地缓存
    • 14.3.2. 数据分片
    • 14.2.1. 本地缓存
    • 14.2.2. 数据分片
    • 14.2.3. JSON和YAML配置
    • 14.1. Spring框架整合
    • 14.2. Spring Cache整合
    • 14.3. Hibernate整合
    • 14.4. Java缓存标准规范JCache API (JSR-107)
    • 14.5. Tomcat会话管理器(Tomcat Session Manager)
    • 14.6. Spring Session会话管理器
    • 14.7. JMX与Dropwizard Metrics
  • 15. 项目依赖列表

Pages 35

  • Home
  • 1. Overview
  • 1. 概述
  • 10. Additional features
  • 10. 额外功能
  • 11. Redis commands mapping
  • 11. Redis命令和Redisson对象匹配列表
  • 12. Standalone node
  • 12. 独立节点模式
  • 13. Tools
  • 13. 工具
  • 14. Integration with frameworks
  • 14. 第三方框架整合
  • 15. Dependency list
  • 15. 项目依赖列表
  • 16. FAQ
  • 2. Configuration
  • 2. 配置方法
  • 3. Operations execution
  • 3. 程序接口调用方式
  • 4. Data serialization
  • 4. 数据序列化
  • 5. Data partitioning (sharding)
  • 5. 单个集合数据分片(Sharding)
  • 6. Distributed objects
  • 6. 分布式对象
  • 7. Distributed collections
  • 7. 分布式集合
  • 8. Distributed locks and synchronizers
  • 8. 分布式锁和同步器
  • 9. Distributed services
  • 9. 分布式服务
  • Redisson项目介绍
  • Table of Content
  • 目录
  • Show 20 more pages…

Wiki Home

项目介绍

Table of Content | 目录

  1. Overview 概述
  2. Configuration 配置方法
  3. Operations execution 程序接口调用方式
  4. Data serialization 数据序列化
  5. Data partitioning (sharding) 单个集合数据分片(Sharding)
  6. Distributed objects 分布式对象
  7. Distributed collections 分布式集合
  8. Distributed locks and synchronizers 分布式锁和同步器
  9. Distributed services 分布式服务
  10. Additional features 额外功能
  11. Redis commands mapping Redis命令和Redisson对象匹配列表
  12. Standalone node 独立节点模式
  13. Tools 工具
  14. Integration with frameworks 第三方框架整合
  15. Dependency list 项目依赖列表
  16. FAQ

使用方式

目前在项目中是混用jedis和redisson的状态,使用jedis是项目前期的原因,目前需要使用redisson的一些高级特性。

参考地址:

  • Jedis api 在线网址:http://tool.oschina.net/uploads/apidocs/redis/clients/jedis/Jedis.html
  • redisson 官网地址:https://redisson.org/
  • redisson git项目地址:https://github.com/redisson/redisson
  • lettuce 官网地址:https://lettuce.io/
  • lettuce git项目地址:https://github.com/lettuce-io/lettuce-core
  • https://www.cnblogs.com/yangzhilong/p/7605807.html
  • https://github.com/redisson/redisson/wiki/目录
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开发架构二三事 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
2018-10-14 Redisson项目介绍Redisson项目介绍i flym
Rui Gu edited this page <relative-time datetime="2018-05-23T22:07:43Z" title="May 24, 2018, 6:07 AM GMT+8" style="box-sizing: border-box;">on May 24</relative-time> · 18 revisions
Albert陈凯
2018/10/15
1.1K0
redis学习之redis应用(四)
Redis Java客户端有很多的开源产品比如Redission、Jedis、lettuce
周杰伦本人
2022/10/25
4690
redis学习之redis应用(四)
分布式锁中的王者方案 - Redisson
上篇讲解了如何用 Redis 实现分布式锁的五种方案,但我们还是有更优的王者方案,就是用 Redisson。
悟空聊架构
2022/05/13
1.4K0
分布式锁中的王者方案 - Redisson
Redis都要老了,你还在用什么古董客户端?
前几日,Redis 创始人 Antirez 在他的个人博客上宣布将结束自己的 Redis 之旅!
xjjdog
2020/07/09
7890
Jedis与Redisson选型对比
1  概述 1.1.       主要内容 本文的主要内容为对比Redis的两个框架:Jedis与Redisson,分析各自的优势与缺点,为项目中Java缓存方案中的Redis编程模型的选择提供参考。 2.    Jedis与Redisson对比 2.1.    概况对比 Jedis是Redis的Java实现的客户端,其API提供了比较全面的Redis命令的支持;Redisson实现了分布式和可扩展的Java数据结构,和Jedis相比,功能较为简单,不支持字符串操作,不支持排序、事务、管道、分区
王金龙
2018/08/24
3.1K0
简单聊聊Redis中的几种java客户端,以及它们的优缺点!
相对于其他的分布式中间件,Redis 支持的客户端种类非常繁多,涵盖更加全面,除了支持比较流行的 c、c++、java、C#、php、Python 等语言以外,还支持 Objective-C、Swift、Node.js 等等,以下是来自于 Redis 支持的按语言分类的客户端截图。
Java极客技术
2023/02/23
1.4K0
简单聊聊Redis中的几种java客户端,以及它们的优缺点!
一起来学redis redission
redis 的客户端有jedis、lettuce、redission;我个人比较推荐的是redission,因为它的分布式锁和缓存实在是太优秀了。Redisson采用了基于NIO的Netty框架,封装了大家常用的集合类以及原子类、锁等工具。
六个核弹
2022/12/23
2.1K0
一起来学redis redission
Redis实战篇
Redis 监听默认 6379 的端口号,可以通过 TCP 方式建立连接。 服务端约定了一种特殊的消息格式,叫做 Redis Serialization Protocol(RESP,Redis 序列化协议),发消息或者响应消息需要按这种格式编码,接收消息需要按这种格式解码。 Redis 设计这种格式的原因∶ 容易实现、解析快、可读性强。 Redis6.0新特性里面说的RESP协议升级到了3.0 版本,其实就是对于服务端和客户端可以接收的消息进行了升级扩展,比如客户端缓存的功能就是在这个版本里面实现的。
编程之心
2021/07/14
8900
Redis实战篇
redisson应用之分布式集合
Redisson的分布式Map结构的RMap Java对象实现了java.util.concurrent.ConcurrentMap接口和java.util.Map接口。同时还保持了元素的插入顺序。该对象的最大容量受Redis限制,最大元素数量是4 294 967 295个。
kl博主
2023/11/18
5910
Redis 客户端 Jedis 的那点事
Redis ,全称为 “Remote Dictionary Server ”,即:远程字典服务器。一款完全开源免费,基于 C 语言编写,遵守 BSD 协议,高性能的 ( Key/Value ) 分布式内存数据库。其基于内存运行并支持持久化的 NoSQL 数据库, 是当前最热门的 NoSQL 数据库之一,通常也被称之为“数据结构服务器”。Redis 为典型的 C/S 架构,基于 Java 语言平台,其使用 Socket、Redis 的 RESP(Redis Serialization Protocol 即 Redis 序列化协议)协议进行业务处理。作为一款备受欢迎的组件,其主要应用于如下场景中:缓存、计数器、购物车、点赞/打卡、分布式锁等等。
Luga Lee
2021/12/09
1K0
Redis 客户端 Jedis 的那点事
分布式锁中的王者方案-Redisson
上篇讲解了如何用 Redis 实现分布式锁的五种方案,但我们还是有更优的王者方案,就是用 Redisson。
悟空聊架构
2021/06/01
1.2K0
分布式锁中的王者方案-Redisson
Redis分布式锁的几种演进方案
需要一种支持分布式集群环境下的锁:查询 DB 时,只有一个线程能访问,其他线程都需要等待第一个线程释放锁资源后,才能继续执行。
Ant丶
2022/03/01
6800
Redis分布式锁的几种演进方案
Redis 客户端 Jedis 的那点事
作为分布式缓存系统之一,Redis 应用场景较为广泛,落地于不同的行业领域以及业务场景,因此,在整个架构拓扑中起着重要的作用。
Luga Lee
2021/11/22
2K0
Redis 客户端 Jedis 的那点事
分布式锁工具Redisson,太香了!!
Redisson和它俩的区别就像一个用鼠标操作图形化界面,一个用命令行操作文件。Redisson是更高层的抽象,Jedis和Lettuce是Redis命令的封装。
用户1263954
2022/10/28
1.1K0
分布式锁工具Redisson,太香了!!
【Redis破障之路】四:Jedis基本使用
在前面我们已经学习了Redis命令行客户端redis-cli的使用,接下来我们了解一下Redis基于Java编程语言的客户端。
三分恶
2021/05/24
6300
【Redis破障之路】四:Jedis基本使用
springboot第57集:Redis万字挑战,一文让你走出微服务迷雾架构周刊
Redis的内存回收机制通过内置的内存管理器来实现。当内存使用量超过了maxmemory配置的限制时,Redis会根据预先配置的内存淘汰策略来选择要删除的数据,以释放内存空间。这些策略通常基于数据的访问模式和重要性来决定,以保证在内存不足的情况下,删除的数据对系统的影响最小。
达达前端
2024/02/21
2130
springboot第57集:Redis万字挑战,一文让你走出微服务迷雾架构周刊
【进阶篇】Redis实战之Redisson使用技巧详解,干活!
相比于 Jedis、Lettuce 等基于 redis 命令封装的客户端,Redisson 提供的功能更加高端和抽象,逼格高!
Java极客技术
2023/02/23
7.5K1
【进阶篇】Redis实战之Redisson使用技巧详解,干活!
Redisson分布式锁最基础内容
Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。
ha_lydms
2023/08/10
1830
Redisson分布式锁最基础内容
Redis真的是单线程吗?
Redis,全名REmote DIctionary Server,开源的高性能的KV内存数据库,支持数据持久化。 开源的支持多种数据结构的基于键值的存储服务系统,高性能、功能丰富。
JavaEdge
2022/11/30
8580
Redis真的是单线程吗?
Redis之Java客户端【Jedis,Spring Data Redis】
在Redis官网中提供了各种语言的客户端,地址:/docs/clients/,不过我是学Java的,那这里就给大家介绍javad的客户端。
叫我阿杰好了
2022/11/07
1.2K0
Redis之Java客户端【Jedis,Spring Data Redis】
相关推荐
2018-10-14 Redisson项目介绍Redisson项目介绍i flym
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档