本文說明數個 Azure Cache for Redis 移轉案例。 您可以將內部部署或雲端虛擬機器(VM)上執行的開放原始碼 Redis 快取,或其他雲端平臺提供的託管快取遷移至 Azure Cache for Redis。
您也可以將一個 Azure Cache for Redis 實例移轉至另一個實例。 如果您只需要將 Azure Redis 快取從某個 Azure 區域移至另一個區域,請參閱 將 Azure Cache for Redis 實例移至不同的區域。
開放原始碼 Redis 可以在許多計算環境中執行,例如私人內部部署數據中心或雲端裝載的 VM。 Amazon Web Services (AWS) 等其他裝載平台會裝載 Redis 快取服務,例如 AWS ElastiCache。 您通常可以使用最少的中斷或停機時間,將這些 Redis 快取移轉至 Azure Cache for Redis。
移轉選項
從某個快取移轉至另一個快取的方式取決於快取所在的位置,以及應用程式與其互動的方式。 下表列出常用的移轉策略。
選項 | 優點 | 缺點 |
---|---|---|
建立新快取 | 最簡單的實作方式。 | 必須將數據重新填入至新的快取,這可能無法與某些應用程式搭配使用。 |
透過唯讀資料庫 (RDB) 檔案匯出和匯入數據。 | 與任何 Redis 快取相容。 | 在產生 RDB 檔案之後寫入至現有快取的數據可能會遺失。 |
將資料雙重寫入到兩個快取。 | 沒有數據遺失或停機、不中斷的快取作業,以及更容易測試。 | 需要兩個快取,持續一段較長的時間。 |
以程式設計方式移轉數據。 | 完全控制數據的移動方式。 | 需要自訂程式碼。 |
建立新快取
如果不中斷的運作和潛在的資料遺失不是問題,將資料移至 Azure Cache for Redis 最簡單的方法是建立 Azure Redis 快取實體,並將您的應用程式連線至該實體。 例如,如果您使用 Redis 做為資料庫記錄的另行快取,您可以輕鬆地從頭重建快取。 這種方法在技術上不是移轉。
實作此選項的一般步驟如下:
- 建立 Azure Cache for Redis 執行個體。 您可以選擇性地試用 Azure 受控 Redis。
- 更新您的應用程式以使用新的 Azure Redis 實例。
- 刪除舊的 Redis 執行個體。
將資料匯出至 RDB 檔案,並將其匯入 Azure Cache for Redis
開放原始碼 Redis 會定義標準機制,以擷取快取記憶體內部數據集的快照集,並將它儲存至任何 Redis 快取可以讀取的 RDB 檔案。 Azure Cache for Redis 進階層 支援透過 RDB 檔案將數據匯入快取實例。 您可以使用 RDB 檔案將資料從現有的快取傳輸到 Azure Cache for Redis。
重要
RDB 檔案格式可以在 Redis 版本之間變更,而且可能無法維持回溯相容性。 您導出的 Redis 快取版本應該等於或低於 Azure Cache for Redis 所提供的版本。
實作此選項的一般步驟如下:
- 儲存現有 Redis 快取的快照集。 您可以 設定 Redis 定期儲存快照 集,或使用 SAVE 或 BGSAVE 命令手動儲存一個快照集。 RDB 檔案預設為 dump.rdb ,且位於 redis.conf 組態檔中指定的路徑。
- 建立新的進階層 Azure Cache for Redis 實例,其大小至少與現有的快取相同。
- 將 RDB 檔案複製到新快取所在區域中的 Azure 儲存體帳戶。 您可以針對這項工作使用
AzCopy
。 - 將 RDB 檔案匯入新的快取。 您也可以使用 PowerShell Import-AzRedisCache Cmdlet。
- 更新應用程式以使用新的執行個體。
注意
若要從另一個 Azure Redis 實例移轉數據,請先從該實例 匯出 RDB 檔案,或使用 PowerShell Export-AzRedisCache Cmdlet。
在移轉期間執行寫入操作至兩個 Redis 緩存
您不必在快取之間移動數據,而是可以暫時將應用程式設定為將數據寫入現有的快取和新快取。 應用程式一開始會從現有的快取讀取數據。 當新的快取有足夠的數據時,您可以將應用程式切換至該快取,並淘汰舊的快取。
例如,假設您使用 Redis 作為會話存放區,而應用程式會話會在七天后到期。 寫入這兩個快取七天之後,您便知道新的快取包含所有未到期的會話資訊,並且您從那時起可以安全地依賴它。 然後,您可以淘汰舊的快取。
實作此選項的一般步驟如下:
- 建立新的進階層 Azure Cache for Redis 實例,其大小至少與現有的快取相同。
- 修改應用程式程式代碼,以同時寫入新的和原始實例。
- 從原始實例繼續使用數據,直到新實例已足夠填入數據為止。
- 將應用程式程式碼更新為只從新執行個體讀取和寫入。
- 刪除原始執行個體。
以程式設計方式移轉
您可以透過程序設計方式從現有的快取讀取數據,並將其寫入 Azure Cache for Redis,以建立自定義移轉。 例如,您可以使用開放原始碼 redis-copy 工具來將數據從某個 Azure Redis 實例複製到另一個實例。
原始碼是撰寫您自己的移轉工具的實用指南。 您也可以使用 已編譯的版本 。
注意
Microsoft 未正式支援此工具。
實作此選項的一般步驟如下:
- 在與現有快取相同的區域中建立 Azure 虛擬機(VM)。 如果您的數據集很大,請選擇功能強大的 VM 以減少複製時間。
- 建立新的 Azure Cache for Redis 實例,並確定它是空的。 此工具
redis-copy
不會覆寫目標快取中的任何現有索引鍵。 - 使用之類的
redis-copy
應用程式,將來源快取中的數據自動複製到目標快取。 複製過程可能需要一段時間,具體時間取決於數據集的大小。