Redis分區
分區是一種將數據分成多個Redis的情況下,讓每一個實例將隻包含關鍵字的子集的過程。
分區的好處
-
它允許更大的數據庫,使用的多台計算機的內存的總和。如果不分區,一台計算機有限的內存可以支持有限的數量。
-
它允許以大規模的計算能力,以多個內核和多個計算機,以及網絡帶寬向多台計算機和網絡適配器在一起使用。
分區的缺點
-
通常不支持涉及多個按鍵的操作。例如,不能兩個集合之間執行交叉點,如果它們被存儲在被映射到不同的Redis實例中的鍵。
-
涉及多個鍵的Redis事務不能被使用。
-
分區粒度是鍵,所以它不可能將分片數據集用一個碩大的鍵在一個非常大的有序集合。
-
當分區時,數據處理比較複雜,比如要處理多個RDB/AOF文件,使數據備份,需要從多個實例和主機聚集持久性文件。
-
添加和刪除的能力可能很複雜。比如Redis集群支持有加,並在運行時刪除節點不支持此功能的能力,但其他係統,如客戶端的分區和代理的數據大多是透明平衡。有一個叫Presharding技術有助於解決這方麵的問題。
分區的類型
redis提供兩種類型的分區。假設我們有四個的Redis實例R0,R1,R2,R3和代表用戶喜歡的用戶很多鍵: user:1, user:2, ... 等等
範圍分區
範圍分區被映射對象轉化為具體的Redis實例的範圍內實現。假定在本例中用戶ID0〜ID10000將進入實例R0,而用戶形成ID10001至20000號將進入實例R1等等。
散列分區
在這種類型的分區,一個散列函數(例如,模數函數)被用於轉換鍵成數字,然後數據被存儲在不同地方 - 它們是不同redis的實例。