Redis 分割槽 詳解

2021-08-02 16:40:25 字數 1112 閱讀 1325

分割槽是分割資料到多個redis例項的處理過程,因此每個例項只儲存key的乙個子集

分割槽的優勢

通過利用多台計算機記憶體的和值,允許構造更大的資料庫

通過多核和多台計算機,允許擴充套件計算能力;通過多台計算機和網路介面卡,允許擴充套件網路頻寬

分割槽的不足

redis的一些特性在分割槽方面表現的不是很好 :

涉及多個key的操作通常是不被支援的。舉例來說,當兩個set對映到不同的redis例項上時,就不能對這兩個set執行交集操作

涉及多個key的redis事務不能使用

當使用分割槽時,資料處理較為複雜,比如你需要處理多個rdb/aof檔案,並且從多個例項和主機備份持久化檔案

增加或刪除容量也比較複雜。redis集群大多數支援在執行時增加、刪除節點的透明資料平衡的能力,但是類似於客戶端分割槽、**等其他系統則不支援這項特性。然而,一種叫做presharding的技術對此是有幫助的

分割槽型別

redis 有兩種型別分割槽,假設有4個redis例項 r0,r1,r2,r3,和類似user:1,user:2這樣的表示使用者的多個key,對既定的key有多種不同方式來選擇這個key存放在哪個例項中。也就是說,有不同的系統來對映某個key到某個redis服務

範圍分割槽

最簡單的分割槽方式是按範圍分割槽,就是對映一定範圍的物件到特定的redis例項

比如,id從0到10000的使用者會儲存到例項r0,id從10001到 20000的使用者會儲存到r1,以此類推

這種方式是可行的,並且在實際中使用,不足就是要有乙個區間範圍到例項的對映表。這個表要被管理,同時還需要各種物件的對映表,通常對redis來說並非是好的方法

雜湊分割槽

另外一種分割槽方法是hash分割槽。這對任何key都適用,也無需是object_name:這種形式,像下面描述的一樣簡單 :

用乙個hash函式將key轉換為乙個數字,比如使用crc32 hash函式。對key foobar執行crc32(foobar)會輸出類似93024922的整數

對這個整數取模,將其轉化為0-3之間的數字,就可以將這個整數對映到4個redis例項中的乙個了。93024922 % 4 = 2,就是說key foobar應該被存到r2例項中

注 : 取模操作是取除的餘數,通常在多種程式語言中用%操作符實現

Redis分割槽詳解

分割槽時分割資料到多個redis例項的處理過程,因此每個例項只儲存key的乙個子集。分割槽的優勢 分割槽的不足 redis的一些特性在分割槽方面表現的不是很好 redis有兩種型別區分,假設有四個redis例項r0,r1,r2,r3,和類似user 1,user2這樣的表示使用者的多個key,對既定...

GPT分割槽詳解

本文作者是一位開源理念的堅定支持者,所以本文雖然不是軟體,但是遵照開源的精神發布。本文作者十分願意與他人分享勞動成果,如果你對我的其他翻譯作品或者技術文章有興趣,可以在如下位置檢視現有的作品集 由於作者水平有限,因此不能保證作品內容準確無誤。如果你發現了作品中的錯誤 哪怕是錯別字也好 請來信指出,任...

GPT 分割槽詳解

保護mbr 保護mbr包含乙個dos分割槽表 lba0 只包含乙個型別值為0xee的分割槽項,在小於2tb的磁碟上,大小為整個磁碟 在更大的磁碟上,它的大小固定為2tb。它的作用是阻止不能識別gpt分割槽的磁碟工具試圖對其進行分割槽或格式化等操作,所以該扇區被稱為 保護mbr 實際上,efi根本不使...