Jedis Commands API说明

本文详细解析了Jedis库在处理Redis集群时的工作原理,包括JedisCluster与ShardedJedis两种模式的特点,以及它们对分布式操作、Pipeline和Transaction的支持情况。同时,文章深入分析了Jedis中Client与Connection的职责,揭示了其内部实现机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Jedis Commands API说明

本章主要针对Jedis源码中部分模块进行说明和简单分析,其中主要包括如下部分

  • Commands API 说明
  • Client & Connection职能说明

前提说明

  • Jedis中提供两种Cluster模式,分别为:
    • JedisCluster – 基于Redis官方提供的集群模式
    • ShardedJedis – 基于ConsistentHash算法的集群模式
  • Jedis提供的Client的类型共有三种:非集群的Jedis & 以上两种集群Jedis

Commands API 说明

Jedis Commands API

1. Command类型说明
  • Jedis中,为Commands提供了两种实现:1. String 类型的 Commands;2. byte[] 类型的 Commands
2. Jedis客户端的继承关系
  • Jedis extends BinaryJedis
  • JedisCluster extends BinaryJedisCluster
  • ShardedJedis extends BinaryShardedJedis
3. 分布式操作支持(具体情况暂不细说)
  • mget & mset
    • JedisCluster 需要要求所有key都处于同一个slot中(存在Redirect情况)
    • ShardedJedis 不支持
  • Pipeline
    • ShardedJedis 实现时 严格 记录了请求的顺序,同时,获取结果时,也是 严格 按照请求顺序获取
    • JedisCluster 对 Pipeline 不提供支持(存在Redirect情况)
  • Transaction
    • JedisCluster & ShardedJedis 对 Transaction 都不提供支持

Client & Connection职能说明

Client & Connection 逻辑

1. 各组件功能说明
  • Client:封装基于String类型的Commands请求
  • BinaryClient:封装基于byte[]类型的Commands请求
  • Connection:封装对连接的管理(connect & disconnect)及Commands的发送
  • Protocol:封装与Redis Server通信的协议(排版 & 分隔符等)
2. 其他说明
  • 由此可见,Jedis & Jedis & ShardedJedis 等都是对 能力(able)的封装,真正的实现还是基于Client
  • 源码可知 Redis 以响应二进制流的首位的不同来表示不同情况(如想了解不同类型的区别,还需查阅Redis Server源码)
private static Object process(final RedisInputStream is) {
   final byte b = is.readByte();
   if (b == PLUS_BYTE) {
     return processStatusCodeReply(is);
   } else if (b == DOLLAR_BYTE) {
     return processBulkReply(is);
   } else if (b == ASTERISK_BYTE) {
     return processMultiBulkReply(is);
   } else if (b == COLON_BYTE) {
     return processInteger(is);
   } else if (b == MINUS_BYTE) {
     processError(is);
     return null;
   } else {
     throw new JedisConnectionException("Unknown reply: " + (char) b);
   }
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值