Redis指令操作中文手冊login
Redis指令操作中文手冊
作者:php.cn  更新時間:2022-04-12 14:07:28

Redis 分區


分割區是分割資料到多個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實例。注意:取模運算是取除的餘數,通常在多種程式語言中以%運算元實作。

#

PHP中文網