成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Jedis源碼理解

企業動態
最近新開了博客,打算把以前記錄的筆記分享出來,就從Jedis(2.5.X)源碼開始吧。以下是我看完Jedis源碼后的個人理解,用問答的形式,比較隨意。

以下是我看完Jedis源碼后的個人理解,用問答的形式,比較隨意。

[[179199]]

1. Redis是什么?

一個緩存,基于內存進行操作。

2. Jedis是什么?

Redis的Java客戶端,用于操作Redis。

3. Jedis如何與Redis交互?

遵循Redis協議,使用socket連接操作Redis

如果是單行回復,那么***個字節是[+]

如果回復的內容是錯誤信息,那么***個字節是[_]

如果回復的內容是一個整型數字,那么***個字節是[:]

如果是bulk回復,那么***個字節是[$]

如果是multi-bulk回復,那么***個字節是[*]

4. Jedis的連接池是怎么回事?

通過實現common包中的GenericObjectPool創建連接池,通過實現BasePoolableObjectFactory生產連接,從而達到創建連接池的效果。

5. Jedis如何操作?

set:Jedis將傳入的key、value和command封裝,通過socket創建連接,用outputStream將命令打出,用inputStream獲取返回的標記。

get:同set。

6. shardJedis是怎么回事?

所謂的分布式Redis,是Jedis客戶端實現的一種模式。啟動n臺Redis,他們就在那提供服務,不會自己做集群。

6.1 那Jedis是如何實現的呢?

創建shardJedisPool的時候,客戶端將傳進來的n臺機器,用每個機器的機器名做了一致性hash,并給每個機器創建160*weight個虛擬節點,虛擬節點也是將名字+i做hash。然后將這些hash值作為key存到一個TreeMap中,即nodes,TreeMap是有序的。

6.2 為什么做虛擬節點?

因為不坐虛擬節點時,可能會出現集群中的某一個節點頻繁被***,而其他節點則沒有工作量,造成數據不均衡,增加了虛擬節點,數據會均衡很多。這就是Jedis的均衡性。

6.3 TreeMap每個key的value存什么呢?

存放的是對應的機器的信息bean,即JedisShardInfo,這樣不難看出,如果以權重weight為1為例,那么每個機器會創建160個節點(真實+虛擬),這樣如果有4個實體機安裝了Redis,那么在nodes中就有160*4條記錄,其中每160條對應一個相同的JedisShardInfo。

Jedis同時又維護了一個Map<ShardInfo<R>,R>即resources,這個map的key存放JedisShardInfo實體,value存放的是通過這個實體JedisShardInfo中的ip:port創建的Jedis,所以,以上面的例子為例,resources中信息的條數就是4。

這樣,當客戶端用set(key,value)時,Jedis將客戶端的key同樣用一致性hash取hash值,然后到nodes中獲取比key一致性hash出來的值大的值,取***個,即所謂的向右移,這樣會獲取一個JedisShardInfo,通過JedisShardInfo到resources中獲取Jedis返回,這樣客戶端就可以通過這個Jedis做增刪改查的操作了。

7. 一致性hash是怎么回事?

一致性hash是一個算法,簡單來說就是將你所需要的值(如key:lilei)取hash值,然后與2^23取余數,得到的值。如lilei取hash是37184759,那么37184759%2^23=376,這個376就是一致性hash取出來的值。這個2^23是什么意思呢?它的值為255*255*255*255,不難發現,這個值是網絡中***的ip數,即一個網絡中最多的機器數。之所以取這個數,是為了當需要添加或刪除機器的時候,不至于讓其他節點失效,這就是一致性。

可能文章中會有一些錯誤,希望童鞋們指正,我希望可以在博客的路上與大家多多交流,共同進步。

【本文為51CTO專欄作者“王森豐”的原創稿件,轉載請注明出處】

責任編輯:龐桂玉 來源: 神算子
相關推薦

2016-10-26 20:49:24

ReactJavascript前端

2022-11-02 21:45:54

SPIJava

2021-05-26 05:22:09

Virtual DOMSnabbdom虛擬DOM

2017-06-16 20:30:54

Python源碼理解

2020-09-18 06:37:18

Rarp協議操作系統

2017-08-18 12:40:21

Python源碼解析

2022-12-23 08:34:30

HookReact

2024-10-05 00:00:06

HTTP請求處理容器

2016-11-03 13:19:38

vue.jsjavascript前端

2020-11-10 09:17:03

Redis

2021-05-18 06:55:07

Java AQS源碼

2021-10-15 09:19:17

AndroidSharedPrefe分析源碼

2021-09-08 06:51:52

AndroidRetrofit原理

2024-09-18 08:10:06

2024-01-29 15:54:41

Java線程池公平鎖

2021-02-20 09:45:02

RPC框架Java

2022-12-07 11:21:30

Reactdiff

2015-01-14 13:22:36

OpenStack創建快照glance api

2023-12-26 01:24:45

Jedis連接池參數

2021-08-24 07:53:28

AndroidActivity生命周期
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本午夜一区二区三区 | 在线观看亚洲 | 免费在线国产视频 | 自拍偷拍3p| 一本大道久久a久久精二百 欧洲一区二区三区 | 蜜桃av一区二区三区 | 在线午夜 | 久久男人 | 国产精品美女久久久久久免费 | 日韩精品在线看 | 久久精品国产精品青草 | 成人不卡在线 | 中文字幕亚洲一区 | 国产欧美一区二区三区在线看 | avhd101在线成人播放 | 日韩一区二区福利 | 懂色av一区二区三区在线播放 | 久热精品视频 | 国产精品成人一区二区三区 | 亚洲精品www | 亚洲在线一区二区三区 | 精品久久香蕉国产线看观看亚洲 | 日本中文字幕在线视频 | 国产久视频 | 久久99视频精品 | 久久在线| 婷婷久久五月天 | 亚洲国产网址 | 国产99视频精品免费播放照片 | 亚洲色欲色欲www | 91大神在线看 | 日日夜夜影院 | 国产精品一区三区 | 国产一区二| 视频1区 | 久久久免费少妇高潮毛片 | 99精品国产一区二区青青牛奶 | 婷婷色成人| 免费一级淫片aaa片毛片a级 | 久草a√| 精品一区二区三区在线视频 |