千家信息网

Jedis与ShardedJedis设计方法是什么

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要讲解了"Jedis与ShardedJedis设计方法是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Jedis与ShardedJedi
千家信息网最后更新 2026年11月03日Jedis与ShardedJedis设计方法是什么

这篇文章主要讲解了"Jedis与ShardedJedis设计方法是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Jedis与ShardedJedis设计方法是什么"吧!

Jedis设计

Jedis作为推荐的java语言redis客户端,其抽象封装为三部分:

  1. 对象池设计:Pool,JedisPool,GenericObjectPool,BasePoolableObjectFactory,JedisFactory

  2. 面向用户的redis操作封装:BinaryJedisCommands,JedisCommands,BinaryJedis,Jedis

  3. 面向redis服务器的操作封装:Commands,Client,BinaryClient,Connection,Protocol

其类设计图如下:


关于common-pool的相关内容,可以参见:http://macrochen.iteye.com/blog/320077

其他类的设计作用如下:

类名职责
Pool抽象Jedis对象池操作;并委托给操作给GenericObjectPool
JedisPool实现Pool并提供JedisFactory工厂
JedisFactory实现BasePoolableObjectFactory,提供创建,销毁Jedis方法
BinaryJedisCommands抽象面向客户端操作的Redis命令;key,value都为序列化后的byte数组
JedisCommands抽象面向客户端操作的Redis命令;提供String类型的key,value
BinaryJedis实现BinaryJedisCommands接口,并将实际操作委托给Client
Jedis实现JedisCommands接口,并将操作委托给Client
Commands抽象Redis操作接口,提供String类型的key,value操作;被Jedis调用
Connection抽象了Redis连接;包括host,port,pass,socket,inputstream,outputstream,protocol 完成与Redis服务器的通信
Protocol抽象了Redis协议处理
BinaryClient继承Connection类,封装了基于Byte[]的key,value操作
Client继承BinaryClient同时实现了Commands,对上层提供基于String类型的操作

ShardedJedis实现分析

ShardedJedis是基于一致性哈希算法实现的分布式Redis集群客户端;ShardedJedis的设计分为以下几块:

  1. 对象池设计:Pool,ShardedJedisPool,ShardedJedisFactory

  2. 面向用户的操作封装:BinaryShardedJedis,BinaryShardedJedis

  3. 一致性哈希实现:Sharded

关于ShardedJedis设计,忽略了Jedis的设计细节,设计类图如下:



关于ShardedJedis类图设计,省略了对象池,以及Jedis设计的以下细节介绍:

类名职责
Sharded

抽象了基于一致性哈希算法的划分设计,设计思路

  1. 基于hash算法划分redis服务器

  2. 保持每台Redis服务器的Jedis客户端

  3. 提供基于Key的划分方法;提供了ShardKeyTag实现

BinaryShardedJedis同BinaryJedis类似,实现BinaryJedisCommands对外提供基于Byte[]的key,value操作
ShardedJedis同Jedis类似,实现JedisCommands对外提供基于String的key,value操作

Sharded一致性哈希实现

shared一致性哈希采用以下方案:

  1. Redis服务器节点划分:将每台服务器节点采用hash算法划分为160个虚拟节点(可以配置划分权重)

  2. 将划分虚拟节点采用TreeMap存储

  3. 对每个Redis服务器的物理连接采用LinkedHashMap存储

  4. 对Key or KeyTag 采用同样的hash算法,然后从TreeMap获取大于等于键hash值得节点,取最邻近节点存储;当key的hash值大于虚拟节点hash值得最大值时,存入第一个虚拟节点

sharded采用的hash算法:MD5 和 MurmurHash两种;默认采用64位的MurmurHash算法;有兴趣的可以研究下,MurmurHash是一种高效,低碰撞的hash算法

感谢各位的阅读,以上就是"Jedis与ShardedJedis设计方法是什么"的内容了,经过本文的学习后,相信大家对Jedis与ShardedJedis设计方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

设计 算法 节点 服务器 服务 方法 一致 一致性 客户 客户端 哈希 封装 对象 内容 接口 类型 委托 存储 学习 命令 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州为想互联网科技有限公司 互联网的科技 互联网科技卖菜 中国 科技 互联网 互联网科技英文 成都互联网科技公司 银优互联网科技有限公司 菲比寻常互联网科技 互联网高科技企业 互联网科技公司有哪些 互联网科技博客 阿里巴巴算科技企业还是互联网 广州恒生互联网科技有限 互联网科技和法律行业 南博望互联网科技有限公司 福建互联网展示科技馆设计 三亚科技创新互联网基地 山东蛋芒互联网科技有限公司 互联网高科技绘画 互联网科技创业有什么好项目 互联网科技活动banner 左右互联网络科技 成都仁贤领冠互联网科技有限公司 成都互联网科技公司工作好不好 互联网金融科技名词解释 互联网科技实习生岗位 富国互联网金融科技混合基金 半导体行业属于互联网高科技类吗 新氧科技和美国互联网有关系吗 宁波允成互联网科技有限公司
0