91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Jedis與ShardedJedis設計方法是什么

發布時間:2022-01-05 17:11:47 來源:億速云 閱讀:145 作者:iii 欄目:云計算

這篇文章主要講解了“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

其類設計圖如下:


Jedis與ShardedJedis設計方法是什么

關于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的設計細節,設計類圖如下:


Jedis與ShardedJedis設計方法是什么
關于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設計方法是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

抚州市| 湘阴县| 锡林浩特市| 南江县| 合水县| 浏阳市| 永州市| 谷城县| 樟树市| 锦州市| 彭水| 新田县| 惠安县| 电白县| 温州市| 阿合奇县| 杨浦区| 克拉玛依市| 佛学| 闽侯县| 庄浪县| 绥中县| 道孚县| 石景山区| 遂昌县| 分宜县| 明光市| 南岸区| 富民县| 屏山县| 忻城县| 水富县| 石首市| 宁陵县| 青浦区| 隆尧县| 渭源县| 云安县| 大兴区| 略阳县| 大庆市|