Redis分區

分區是將數據拆分爲多個Redis實例的過程,因此每個實例只包含一部分鍵。

分區的優點

  • 它允許更大的數據庫,使用更多計算機的內存總和。如果沒有分區,則限制爲單個計算機可以支持的內存量。
  • 它允許將計算能力擴展到多個核心和多個計算機,並將網絡帶寬擴展到多個計算機和網絡適配器。

分區的缺點

  • 通常不支持涉及多個鍵的操作。 例如,如果兩個集合存儲在映射到不同Redis實例的鍵中,則不能執行兩個集合之間的交集操作。
  • 不能使用涉及多個鍵的Redis事務。
  • 分區粒度是關鍵,因此不可能使用單個巨大的鍵(如非常大的排序集合)來分割數據集。
  • 使用分區時,數據處理更復雜。 例如,必須處理多個RDB/AOF文件,並獲得數據的備份,您需要聚合來自多個實例和主機的持久性文件。
  • 添加和刪除容量可能很複雜。 例如,Redis Cluster支持大多數透明的數據重新平衡,具有在運行時添加和刪除節點的能力。但是,其他系統(如客戶端分區和代理)不支持此功能。但可以使用一種叫作Presharding的技術來處理這方面的問題。

分區類型

Redis中有兩種類型的分區。假設有四個Redis實例:R0R1R2R3以許多代表用戶的鍵,如user:1user:2,…等等。

範圍分區

範圍分區通過將對象的範圍映射到特定的Redis實例來實現。假設在上面示例中,從ID 0到ID 10000的用戶將進入實例R0,而從ID 10001到ID 20000的用戶將進入實例R1,以此類推。

哈希分區

在這種類型的分區中,使用散列函數(例如,模函數)將鍵轉換成數字,然後將數據存儲在不同的Redis實例中。