redis三个连接客户端框架的选择:Jedis,Redisson,Lettuce

2023-11-05

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

首先,在spring boot2之后,对redis连接的支持,默认就采用了lettuce。这就一定程度说明了lettuce 和Jedis的优劣。

概念:

Jedis:是老牌的Redis的Java实现客户端,提供了比较全面的Redis命令的支持,

Redisson:实现了分布式和可扩展的Java数据结构。

Lettuce:高级Redis客户端,用于线程安全同步,异步和响应使用,支持集群,Sentinel,管道和编码器。

优点:
  Jedis:比较全面的提供了Redis的操作特性

Redisson:促使使用者对Redis的关注分离,提供很多分布式相关操作服务,例如,分布式锁,分布式集合,可通过Redis支持延迟队列

Lettuce:基于Netty框架的事件驱动的通信层,其方法调用是异步的。Lettuce的API是线程安全的,所以可以操作单个Lettuce连接来完成各种操作

可伸缩:

Jedis:使用阻塞的I/O,且其方法调用都是同步的,程序流需要等到sockets处理完I/O才能执行,不支持异步。Jedis客户端实例不是线程安全的,所以需要通过连接池来使用Jedis。

Redisson:基于Netty框架的事件驱动的通信层,其方法调用是异步的。Redisson的API是线程安全的,所以可以操作单个Redisson连接来完成各种操作

Lettuce:基于Netty框架的事件驱动的通信层,其方法调用是异步的。Lettuce的API是线程安全的,所以可以操作单个Lettuce连接来完成各种操作

lettuce能够支持redis4,需要java8及以上。
lettuce是基于netty实现的与redis进行同步和异步的通信。

lettuce和jedis比较:
jedis使直接连接redis server,如果在多线程环境下是非线程安全的,这个时候只有使用连接池,为每个jedis实例增加物理连接 ;

lettuce的连接是基于Netty的,连接实例(StatefulRedisConnection)可以在多个线程间并发访问,StatefulRedisConnection是线程安全的,所以一个连接实例可以满足多线程环境下的并发访问,当然这也是可伸缩的设计,一个连接实例不够的情况也可以按需增加连接实例。

Redisson实现了分布式和可扩展的Java数据结构,和Jedis相比,功能较为简单,不支持字符串操作,不支持排序、事务、管道、分区等Redis特性。Redisson的宗旨是促进使用者对Redis的关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。

总结:
优先使用Lettuce,如果需要分布式锁,分布式集合等分布式的高级特性,添加Redisson结合使用,因为Redisson本身对字符串的操作支持很差。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

redis三个连接客户端框架的选择:Jedis,Redisson,Lettuce 的相关文章

  • Cacheline技术浅析

    最近组内有个同事在做cacheline相关的特性 向其学习了一下 对原来的cacheline的理解更近了一步 这里总结一下 请彭超大侠有空的话帮忙在斧正一下 Cache就是对内存的内容进行缓存的一个硬件 cache和内存的逻辑关系结构如下图
  • Linux 下 Memcached 缓存服务器安装配置

    安装Memcache服务器端 我目前的平台 服务器是CentOS 5 4 内核 2 6 164 客户端是Windows XP SP2 需要安装的就是服务器的Memcached的守护进程和客户端的PHP扩展php memcache两个东西 现
  • redis三个连接客户端框架的选择:Jedis,Redisson,Lettuce

    Jedis api 在线网址 http tool oschina net uploads apidocs redis clients jedis Jedis html redisson 官网地址 https redisson org red
  • redisson常用APi-Example

    中文文档目录 redisson中文文档目录 分布式对象 package com example redissondemo test import com example redissondemo RedissonDemoApplicatio
  • readis windows servrer 搭建与Java客户端的连接

    1 首先下载redis redis 2 0 2 zip 32 bit 解压 从下面地址下 http code google com p servicestack wiki RedisWindowsDownload 看到下面有redis 2
  • 设置缓存的大小

    目录 1 CacheManager级别 2 Cache级别 3 大小衡量 4 配置大小示例 缓存大小的限制可以设置在CacheManager上 也可以设置在单个的Cache上 我们可以设置缓存使用内存的大小 也可以设置缓存使用磁盘的大小 但
  • Cache的基本原理以及简单操作

    对于没有接触过底层技术的朋友来说 或许从未听说过cache 毕竟cache的存在对程序员来说是透明的 在接触cache之前 先为你准备段code分析 int arr 10 128 for i 0 i lt 10 i for j 0 j lt
  • Redis command timed out nested exception is io.lettuce.core.RedisCommandTimeoutException

    报错如下 ERROR org springframework dao QueryTimeoutException Redis command timed out nested exception is io lettuce core Red
  • 缓存系列文章--8.热点key问题(mutex key)

    转载请注明出处哈 http carlosfu iteye com blog 2269678 一 引出热点key问题 我们通常使用 缓存 过期时间的策略来帮助我们加速接口的访问速度 减少了后端负载 同时保证功能的更新 一般情况下这种模式已经基
  • Spring Boot2.x 整合lettuce redis 和 redisson

    前言 springboot2之前redis的连接池为jedis 2 0以后redis的连接池改为了lettuce lettuce能够支持redis4 需要java8及以上 lettuce是基于netty实现的与redis进行同步和异步的通信
  • Reactive的方式访问Redis

    前言 本文主要大概介绍一下响应式 反应式编程方式访问 redis 不能解决很多生产问题 只是帮助大家对响应式编程有一个认识 本文是以Reactive 对方式访问 Redis 当然也可以访问mongodb 以及部分关系型数据库 例如 Post
  • 使用jedis如何写入redis集群中的特定槽/节点

    我正在尝试提高将数据写入redis集群的性能 我们计划从 redi sentinel 迁移到集群模式以实现可扩展性 但是 与redis sentinel相比 写操作的性能要差很多 我们在redis sentinel中利用了管道 但集群模式不
  • redis 好像服务器已经关闭了连接

    我想使用redis sub pub 但是当我订阅一个频道时 2分钟后 控制台输出异常 服务器似乎已关闭连接 redis版本 redis 3 0 3 jedis版本 2 3 0 操作系统 OS X Yosemite 10 10 5 订阅 cl
  • org.springframework.core.convert.ConverterNotFoundException:找不到能够从类型转换为类型的转换器 [java.lang.String] - Redis

    我在用Spring Data Redis与Spring Boot 2 0例子 在此示例中 我尝试将客户数据 学生数据保存在一起 我不太确定这里的数据建模是如何发生的 但假设它与 Mongo DB 相同 纯非关系 有人可以帮忙解决以下错误吗
  • 使用 RedisTemplate 从 Redis 获取设置值

    我能够从中检索值Redis using Jedis public static void main String args Jedis jedis new Jedis HOST PORT jedis connect Set
  • 如何使用 jedis for Java 连接 Docker Redis 集群实例?

    我使用 redis docker compose 创建了一个包含 6 个节点的集群 3 个主节点和 3 个从节点 并将所有节点链接起来 集群信息 cluster state ok cluster slots assigned 16384 c
  • 无法从池中获取资源(SocketTimeoutException:)

    我正在运行多个工作线程 大约 10 个 来访问来自 redis Q 的数据 对于我正在使用无限超时杰迪斯客户端 Jedis jedis pool getResource jedis getClient setTimeoutInfinite
  • 如何使用 Jedis 连接到 AWS ElastiCache for Redis 集群?

    以前 我们使用 Redis 时通过 AWS ElastiCache 禁用了集群模式 我们使用 Jedis 的 Java 代码指向主单节点端点 用于读取和写入 我们现在已经启用了集群模式 我们现在已更改代码以指向新 Redis 集群的配置端点
  • 与 Jedis 客户端的事务发生 Redis 异常

    为了避免在我的 Redis 通道中出现重复 我通过在 Redis 集中保留索引来检查消息是否已经存在 以下是我的实现 然而 它给出了一个例外 redis clients jedis exceptions JedisDataException
  • Redis Lettuce 连接和 BLPOP

    Lettuce 在底层使用单个共享本机连接 在这种设计中使用 BLPOP 阻止命令是否安全 它会阻止此共享本机连接并影响其他客户端吗 我在 Lettuce 文档中没有找到具体的解释说明 提前致谢 使用 BLPOP BLMOVE 和类似命令会

随机推荐

  • JSch-用java实现服务器远程操作

    介绍 前段时间接了一个比较特殊的需求 需要做一个用于部署服务的服务 主要是将一个k8s服务集群部署到远端的服务器上 具体服务器的连接信息会通过接口传入 本来部署是人工来完成的 无非是将一些必须的文件scp到目标服务器上 然后ssh远程登录
  • ubuntu c语言头文件,Ubuntu找不到stdio.h等头文件_安装c库_build-essential安装失败解决...

    最近安装的Ubuntu1804系统 vim gcc都是现安的 用gcc编译时出现找不到头文件情况 于是百度 原来linux类的操作系统上面开发程序 光有了gcc 是不行的 它还需要一个 build essentia 作用是提供编译程序必须软
  • 【无标题】torch.optim.SGD参数详解

    torch optim SGD是PyTorch中实现的Stochastic Gradient Descent SGD 优化器 用于更新神经网络中的参数 以最小化损失函数 从而提高模型的精度 它的一些重要参数如下 lr 学习率 learnin
  • office文档图标显示不正常

    一直用Office2013 前几天用到WPS一个功能 用完后就卸载了 结果电脑中的office文档图标 word excel ppt等 都显示异常 网上查找好久解决了 网址如下 https jingyan baidu com article
  • target_link_libraries 和link_libraries区别

    TARGET LINK LIBRARIES 设置要链接的库文件的名称 语法 TARGET LINK LIBRARIES targetlibrary1
  • 数据结构--并查集

    并查集适用情况 1 有时候 并不关心数据之间的前后关系 也不关心数据的层次关系 一些确定元素只是单纯的聚集在一起 这样的元素聚集集合被称为集合 当希望知道某个数据是否存在一个集合中 或者两个元素是否在同一个集合中时 就需要使用一些集合数据结
  • windows 安装NVM 出现版本切换不成功 问题解决与分析

    1 安装nvm的时候要去删除默认目录下C Program Files nodejs的文件夹 安装完成后也要去检查这个文件夹是不是存在 2 配置环境变量 对应第一步的 2 使用nvm install 版本号 如果能成功下载node 注意说的成
  • FFmpeg部署及操作指南

    什么是FFmpeg FFmpeg是一个开源的跨平台音视频处理工具集 可以用于处理 转换 编辑和流媒体音视频文件 它提供了一组强大的命令行工具 可以实现音视频的解码 编码 封装 过滤 转码等功能 FFmpeg的功能 FFmpeg的功能非常多
  • matlab分类算法函数,MATLAB分类与预测算法函数

    1 glmfit 功能 构建一个广义线性回归模型 使用格式 b glmfit X y distr 根据属性数据X以及每个记录对应的类别数据y构建一个线性回归模型 distr可取值为 binomial gamma inverse gaussi
  • C#系列之值类型与引用类型

    目录 1 变量类型的复习 2 值类型和引用类型的区别 1 变量类型的复习 无符号整形 byte b 1 ushort us 1 uint ui 1 ulong ul 1 有符号整形 sbyte sb 1 short s 1 int i 1
  • LINUX下更改字符编码方式-增加GB2312

    修改local文件 sudo gedit var lib locales supported d local 添加zh CN GB2312字符集 如下 en US UTF 8 UTF 8 zh CN UTF 8 UTF 8 zh CN GB
  • 推荐几个 VS Code 扩展、主题和字体

    前言 工欲善其事 必先利其器 VS Code 作为当前最流行的开源代码编辑器之一 要说它为什么这么受大众喜爱 我觉得一是它现代化的界面 二是它强大的扩展系统 得益于 VS Code 的扩展系统 我们可以给编辑器加上各种 Buff 让它变成自
  • 深度学习经典网络:ShuffleNet 系列网络(ShuffleNet v1)

    ShuffleNet v1 http openaccess thecvf com content cvpr 2018 html Zhang ShuffleNet An Extremely CVPR 2018 paper html tenso
  • 第十四届蓝桥杯模拟赛第二期J题答案(C++代码)

    A题 题面 请找到一个大于 2022 的最小数 这个数转换成二进制之后 最低的 6 个二进制为全为 0 请将这个数的十进制形式作为答案提交 思路 由于最低6位都是0 且 11111000000 2 lt 2048 10 所以选要选取 100
  • 让vs2008与vs2012同时打开同一个项目文件

    在开发过程中 小组开发经常碰到很多人用的ide版本不同 而项目组成员为了参与多个项目 经常安装多个版本的ide 本文主要讲解vs2008与vs2012之间如何在源码管理下同时打开一个项目文件进行开发 本文以c 开发为例 其他语言一样 1 关
  • 并发编程 :Concurrent 用户指南 ( 下 )

    并发编程 Concurrent 用户指南 下 2017 09 04 ImportNew 来源 高广超 www jianshu com p 8cb5d816cb69 锁 Lock java util concurrent locks Lock
  • gradlew 命令说明

    gradlew 命令 快速构建命令 查看所有任务 gradlew tasks all gradlew命令都可以使用简写 例如 gradlew assembleRelease 简写为 gradlew aR 查看项目的依赖都依赖了哪些库 gra
  • Android 3.0 SDK中新增API详解

    Android 3 0 SDK中新增了哪些API呢 我们总结下平板系统honeycomb中的新特性 首先需要澄清的是经过eoeAndroid发现设置模拟器的分辨率到普通WVGA这样的解析度时平板的特性自动消失和Android 2 3没有什么
  • Pytorch 随机种子设置 不可控因素

    为确保模型训练过程中 需要设置模型的随机种子 具体操作如下 主程序 def torch seed seed torch manual seed seed torch cuda manual seed seed torch cuda manu
  • redis三个连接客户端框架的选择:Jedis,Redisson,Lettuce

    Jedis api 在线网址 http tool oschina net uploads apidocs redis clients jedis Jedis html redisson 官网地址 https redisson org red