本頁面提供指引,說明如何以最佳方式使用 Memorystore for Redis。這個頁面也會指出應避免的潛在問題。
如需疑難排解情境清單,請參閱「疑難排解」。
匯出 RDB
匯出 RDB 備份時,請遵循下列指引:
- 在寫入率較低的期間匯出。
- 如果在寫入率較高的期間匯出資料,請暫時將
maxmemory設定調降至執行個體容量的 50%,為作業順利完成提供足夠的負擔。
需要大量資源的作業
對於標準級 Redis 執行個體,下列作業會在作業期間使用額外記憶體:
由於複製作業,版本升級、調度資源和手動容錯移轉會使用額外記憶體 (適用於標準級執行個體)。這些作業會遵循「標準層級執行個體升級行為」一節所述的複製程序。
由於匯入和匯出作業會產生 Redis 分支程序,並與這些作業相關聯的寫入時複製資料管理機制,因此需要額外記憶體。
為減輕耗用大量資源的作業所造成的缺點,您應:
- 在作業期間,將 maxmemory 設定調降至執行個體容量的 80%。 這可為成功運作提供足夠的負擔。
- 監控系統記憶體用量比率指標,並確保這項指標低於 80%,再執行下列其中一項作業。
- 請在執行個體流量較低的時段 (例如夜間或週末等) 執行這些作業。
- 執行這些作業前,請先使用指數輪詢設定重試邏輯。
需要重試連線的作業和情境
下列作業和情境會中斷網路與 Redis 執行個體之間的網路連線:
這些作業會修改執行個體,因此需要暫時中斷連線。 執行這些作業前,請務必採用指數輪詢重試邏輯,確保應用程式會自動重新連線並繼續正常運作。
例行維護
Memorystore for Redis 執行個體會定期進行維護。詳情請參閱 Memorystore for Redis 維護政策。
請採用下列最佳做法,為例行維護做好準備:
- 設定維護期間,指定維護更新的執行時間。
- 將維護期間排定在執行個體流量較低且記憶體負荷充足的時段。詳情請參閱「維護更新的影響」。
- 開啟維護期間通知,在維護作業即將開始時收到提醒。
- 採用指數輪詢的重試邏輯。
- 對於 Standard 層級執行個體,您可以透過手動容錯移轉模擬維護事件,瞭解維護作業造成的容錯移轉對應用程式的影響。
- 對於 Basic 層級執行個體,您可以暫時調整執行個體大小,模擬維護更新的影響。觀察影響後,即可縮減回原始大小。
記憶體管理
由於開放原始碼 Redis 會發生眾所周知的記憶體片段化問題,因此記憶體管理可能是一項挑戰。建議您降低執行個體的maxmemory
設定,以便在記憶體壓力過大時提供額外資源。
如要監控 Memorystore 執行個體的記憶體壓力,最佳方式是使用「系統記憶體用量比率」指標。如需 Memorystore for Redis 記憶體管理詳細指南,請參閱記憶體管理最佳做法。
管理閒置連線
如果連線未正確終止,一段時間後,您可能會發現連線至 Memorystore 執行個體的連線數增加。這可能會對效能造成負面影響,尤其是在使用傳輸加密時,因為這會根據容量層級設定最大連線數限制。為減輕這類情況,建議使用 timeout Redis 設定參數,設定閒置用戶端連線自動終止前的秒數。
資料存取透明化控管機制資源名稱
請勿在 Memorystore for Redis 資源名稱中儲存私密資料。資源名稱是指 Memorystore for Redis 執行個體名稱,以及執行個體中繼資料 (例如標記)。資源名稱中儲存的資料不一定會受到 Google Cloud 資料存取透明化控管機制保護,且可能與貴機構的資料存取透明化控管機制法規遵循規定衝突。
部分無伺服器環境需要無伺服器虛擬私有雲存取連接器
部分無伺服器環境需要無伺服器虛擬私有雲存取連接器,才能連線至 Redis 適用的 Memorystore。如要透過上述任一環境連線,請為專案設定無伺服器虛擬私有雲存取連接器。
網路
建議使用私人服務存取 連線模式。Memorystore for Redis 使用兩種連線模式:私人服務存取權和直接對等互連。私人服務存取連線模式可簡化 IP 範圍管理作業,並允許您視需要使用共用虛擬私有雲。
建立執行個體後,就無法變更連線模式。
詳情請參閱「網路」。
監控與快訊
建議使用監控和快訊,因為這些功能會提供 Redis 執行個體記憶體用量的關鍵信號。您也可以藉此深入瞭解 Redis 執行個體回應傳入快取要求的效率。
建議您設定下列預設快訊:
CPU 用量最佳做法
不當使用耗用資源的 Redis 指令會導致延遲時間長、無回應或連線發生問題。標準級執行個體可在災難復原期間提供高可用性,並依賴主要節點和備用節點之間的非同步複製功能。如果其中一個節點的指令處理作業耗費大量資源,導致 Redis 主執行緒遭到封鎖,複製作業可能會受到影響。如果問題持續發生,且發生位置中斷,則中斷位置中寫入的最新資料可能無法在其他位置使用。
建議您使用 Cloud Monitoring 為「主執行緒 CPU 秒數」(redis.googleapis.com/stats/cpu_utilization_main_thread) 指標設定快訊,確保 CPU 使用率不會超過主要節點的 0.8 秒,或每個副本節點的 0.5 秒 (副本指定為唯讀副本時)。
如果 Redis 執行個體超出建議值,建議您將執行個體擴充至較高的容量層級,或按照疑難排解說明操作,避免 CPU 密集型作業。
需要大量資源的指令
強烈建議您避免使用耗用大量資源的 Redis 指令。使用這些指令可能會導致下列效能問題:
- 延遲時間長和用戶端逾時
- 因增加記憶體用量的指令而導致記憶體壓力
- 節點複製和同步處理期間發生資料遺失,因為 Redis 主執行緒遭到封鎖
- 健康狀態檢查資源不足、可觀測性和複製