Redis 叢集並沒有使用一致性hash,而是引入了哈希槽的概念。 Redis 集群有16384個哈希槽,每個key透過CRC16校驗後對16384取模來決定放置哪個槽,集群的每個節點負責一部分hash槽。但為什麼哈希槽的數量是16384(2^14)個呢,這個問題在github上有人提過,作者也給了解答,下面我們來簡單分析一下。
為什麼是16384(2^14)個?
在redis節點發送心跳包時需要把所有的槽放到這個心跳包裡,以便讓節點知道當前集群信息,16384=16k,在發送心跳包時使用bitmap壓縮後是2k(2 * 8 (8 bit) * 1024(1k) = 2K
),也就是說使用2k的空間創造了16k的槽數。
雖然使用CRC16演算法最多可以分配65535(2^16-1)個槽位,65535=65k,壓縮後就是8k(8 * 8 (8 bit) * 1024(1k) = 8K
),也就是說需要需要8k的心跳包,作者認為這樣做不太值得;並且一般情況下一個redis集群不會有超過1000個master節點,所以16k的槽位是個比較合適的選擇。
作者原話:
1、普通心跳資料包攜帶節點的完整配置,此配置可以用舊配置以冪等方式替換,以便更新舊配置。這意味著它們包含原始形式的節點的槽配置,16k的槽配置需要使用2k記憶體空間,但是使用65k槽將使用8k的記憶體空間。
2、同時,由於其他設計折衷,Redis叢集不可能擴展到超過1000個節點。
因此,16k是比較合適的,可以確保每個主設備有足夠的槽,最大為1000個。 redis的node配置資訊透過位圖儲存傳輸的,傳輸前有一個壓縮過程,壓縮比跟槽個數和節點數有很大關係(because when N is small the bitmap would have slots/N bits set that is a large percentage of bits set.)【槽數/節點數】當這個N越大,壓縮比就越小。
更多Redis相關技術文章,請造訪Redis教學欄位學習!
以上是redis為什麼16384個槽的詳細內容。更多資訊請關注PHP中文網其他相關文章!

重新命名butrequirquirequirquirequiresificantificantramandinvolvorvesindatapersistenceandscalibility.1)ITSIN-MEMORYNATURENATUREMORYNATURENATURENATURENATUREPROVIDESULTRA-FASTRAITATITS/WREATERATITS/WREATERATITS/WREATERATITS.2)然而,Idealsforeal-timeApplications.2)然而,beleftal-foreal-timeApplications.2)

Redisoutperformstraditionaldatabasesinspeedforread/writeOperationsDuetoitsin-memorynature,niletraditionalditionalditionalditationaldatabasesexcelcelincomplexqueriessanddaintegrity.1)redisisisisideSidealForrealForreal-timeanalyticsanticanticanticanticanticantic.2)

用戶edisinsteadofatraditionaldatabasewhenyourapplicationrequirespeedandreal-timedataprocorsing,sueAsAsforCaching,sessionmanagement,orrereal-timeanalytics.redisexcelsin:1)caching,緩存,減少載荷載量

Redis超越SQL數據庫的原因在於其高性能和靈活性。 1)Redis通過內存存儲實現極快的讀寫速度。 2)它支持多種數據結構,如列表和集合,適用於復雜數據處理。 3)單線程模型簡化開發,但高並發時可能成瓶頸。

Redis在高並發和低延遲場景下優於傳統數據庫,但不適合複雜查詢和事務處理。 1.Redis使用內存存儲,讀寫速度快,適合高並發和低延遲需求。 2.傳統數據庫基於磁盤,支持複雜查詢和事務處理,數據一致性和持久性強。 3.Redis適用於作為傳統數據庫的補充或替代,但需根據具體業務需求選擇。

Redisisahigh-performancein-memorydatastructurestorethatexcelsinspeedandversatility.1)Itsupportsvariousdatastructureslikestrings,lists,andsets.2)Redisisanin-memorydatabasewithpersistenceoptions,ensuringfastperformanceanddatasafety.3)Itoffersatomicoper

Redis主要是一個數據庫,但它不僅僅是數據庫。 1.作為數據庫,Redis支持持久化,適合高性能需求。 2.作為緩存,Redis提升應用響應速度。 3.作為消息代理,Redis支持發布-訂閱模式,適用於實時通信。

redisisamultifaceTedToolThatServesAsAdatabase,server和more.itfunctionsasanin-memorydatastrustore,supportsvariousDataStructures,and CanbeusedAsacache,MessageBroker,sessionStorage,sessionStorage,sessionstorage,andford forderibedibedlocking。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

WebStorm Mac版
好用的JavaScript開發工具

Dreamweaver CS6
視覺化網頁開發工具

記事本++7.3.1
好用且免費的程式碼編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。