[redis] Jedis 与 ShardedJedis 设计
生活随笔
收集整理的這篇文章主要介紹了
[redis] Jedis 与 ShardedJedis 设计
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Jedis設計
Jedis作為推薦的java語言redis客戶端,其抽象封裝為三部分:
?
?
其類設計圖如下:
?
?
關于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的設計分為以下幾塊:
?
關于ShardedJedis設計,忽略了Jedis的設計細節,設計類圖如下:
?
關于ShardedJedis類圖設計,省略了對象池,以及Jedis設計的以下細節介紹:?
| 類名 | 職責 |
| Sharded | 抽象了基于一致性哈希算法的劃分設計,設計思路 ? |
| BinaryShardedJedis | 同BinaryJedis類似,實現BinaryJedisCommands對外提供基于Byte[]的key,value操作 |
| ShardedJedis | 同Jedis類似,實現JedisCommands對外提供基于String的key,value操作 |
?
?
Sharded一致性哈希實現
shared一致性哈希采用以下方案:
總結
以上是生活随笔為你收集整理的[redis] Jedis 与 ShardedJedis 设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nexus搭建私服
- 下一篇: C# Json 序列化与反序列化一