redis几种java客户端比较

jedis、redisson、lettuce

概况

  • Jedis是Redis的Java实现的客户端,其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/目录

原文发布于微信公众号 - 开发架构二三事(gh_d6f166e26398)

原文发表时间:2019-09-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券