[redis] Jedis 与 ShardedJedis 设计
生活随笔
收集整理的這篇文章主要介紹了
[redis] Jedis 与 ShardedJedis 设计
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Jedis設(shè)計
Jedis作為推薦的java語言redis客戶端,其抽象封裝為三部分:
?
?
其類設(shè)計圖如下:
?
?
關(guān)于common-pool的相關(guān)內(nèi)容,可以參見:http://macrochen.iteye.com/blog/320077
?
其他類的設(shè)計作用如下:
?
?
| 類名 | 職責(zé) |
| Pool | 抽象Jedis對象池操作;并委托給操作給GenericObjectPool |
| JedisPool | 實現(xiàn)Pool并提供JedisFactory工廠 |
| JedisFactory | 實現(xiàn)BasePoolableObjectFactory,提供創(chuàng)建,銷毀Jedis方法 |
| BinaryJedisCommands | 抽象面向客戶端操作的Redis命令;key,value都為序列化后的byte數(shù)組 |
| JedisCommands | 抽象面向客戶端操作的Redis命令;提供String類型的key,value |
| BinaryJedis | 實現(xiàn)BinaryJedisCommands接口,并將實際操作委托給Client |
| Jedis | 實現(xiàn)JedisCommands接口,并將操作委托給Client |
| Commands | 抽象Redis操作接口,提供String類型的key,value操作;被Jedis調(diào)用 |
| Connection | 抽象了Redis連接;包括host,port,pass,socket,inputstream,outputstream,protocol 完成與Redis服務(wù)器的通信 |
| Protocol | 抽象了Redis協(xié)議處理 |
| BinaryClient | 繼承Connection類,封裝了基于Byte[]的key,value操作 |
| Client | 繼承BinaryClient同時實現(xiàn)了Commands,對上層提供基于String類型的操作 |
?
?
ShardedJedis實現(xiàn)分析
ShardedJedis是基于一致性哈希算法實現(xiàn)的分布式Redis集群客戶端;ShardedJedis的設(shè)計分為以下幾塊:
?
關(guān)于ShardedJedis設(shè)計,忽略了Jedis的設(shè)計細節(jié),設(shè)計類圖如下:
?
關(guān)于ShardedJedis類圖設(shè)計,省略了對象池,以及Jedis設(shè)計的以下細節(jié)介紹:?
| 類名 | 職責(zé) |
| Sharded | 抽象了基于一致性哈希算法的劃分設(shè)計,設(shè)計思路 ? |
| BinaryShardedJedis | 同BinaryJedis類似,實現(xiàn)BinaryJedisCommands對外提供基于Byte[]的key,value操作 |
| ShardedJedis | 同Jedis類似,實現(xiàn)JedisCommands對外提供基于String的key,value操作 |
?
?
Sharded一致性哈希實現(xiàn)
shared一致性哈希采用以下方案:
總結(jié)
以上是生活随笔為你收集整理的[redis] Jedis 与 ShardedJedis 设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nexus搭建私服
- 下一篇: 第一次接触终极事务处理——Hekaton