Redis - 分割槽



分割槽是將資料拆分成多個 Redis 例項的過程,這樣每個例項只包含鍵的一個子集。

分割槽的優勢

  • 它允許使用許多計算機的記憶體總和來建立更大的資料庫。如果沒有分割槽,則僅限於單臺計算機可以支援的記憶體量。

  • 它允許將計算能力擴充套件到多個核心和多臺計算機,並將網路頻寬擴充套件到多臺計算機和網路介面卡。

分割槽的缺點

  • 通常不支援涉及多個鍵的操作。例如,如果鍵對映到不同的 Redis 例項,則無法執行兩個集合之間的交集。

  • 無法使用涉及多個鍵的 Redis 事務。

  • 分割槽的粒度是鍵,因此無法對具有單個巨大鍵(例如非常大的有序集合)的資料集進行分片。

  • 使用分割槽時,資料處理更復雜。例如,您必須處理多個 RDB/AOF 檔案,要獲取資料的備份,需要聚合來自多個例項和主機的永續性檔案。

  • 新增和刪除容量可能很複雜。例如,Redis 叢集主要支援透過能夠在執行時新增和刪除節點來透明地重新平衡資料。但是,其他系統(如客戶端分割槽和代理)不支援此功能。“預分片”技術在這方面有所幫助。

分割槽型別

Redis 中有兩種可用的分割槽型別。假設我們有四個 Redis 例項 R0、R1、R2、R3 和許多表示使用者的鍵,例如 user:1、user:2 等。

範圍分割槽

範圍分割槽是透過將物件的範圍對映到特定的 Redis 例項來實現的。例如,在我們的示例中,ID 為 0 到 10000 的使用者將進入例項 R0,而 ID 為 10001 到 20000 的使用者將進入例項 R1,依此類推。

雜湊分割槽

在這種型別的分割槽中,使用雜湊函式(例如模數函式)將鍵轉換為數字,然後將資料儲存在不同的 Redis 例項中。

廣告
© . All rights reserved.