當雲資料庫 Tair(相容 Redis)資料到期後,執行個體將根據預設策略逐步刪除已到期的資料,這導致到期資料仍然佔據著記憶體空間。您可以在系統營運管理(簡稱OOS)中配置定期營運任務,在業務低峰期,掃描(SCAN)所有Key並立即刪除已到期的Key,釋放記憶體佔用。
背景資訊
雲資料庫 Tair(相容 Redis)執行個體為保障讀寫效能,其刪除邏輯為非同步刪除。當資料到期後,執行個體不會立即刪除已到期的資料,而是通過主動刪除(後台定期掃描、刪除部分到期Key)與被動刪除(當使用者訪問到到期Key,則刪除)的方式對到期Key進行逐步刪除,因此到期資料仍然佔據著記憶體空間。在極端情況下,當大量資料同時到期時,資料會立即到期,但需要較長時間進行刪除、回收記憶體空間。
您可以參考本方案,免費使用OOS服務,定時調用FlushExpireKeys API:執行個體會掃描(SCAN)所有Key並立即刪除已到期的Key。
SCAN命令掃描所有資料會使執行個體的CPU負載上升,建議您在業務低峰期執行該任務。
前提條件
您需要為OOS服務建立一個RAM角色,用於OOS服務訪問雲資料庫 Tair(相容 Redis)服務,具體操作請參見為OOS服務設定RAM許可權。
您可以為該角色授予系統權限原則AliyunKvstoreFullAccess。授權後,RAM角色可以管理雲資料庫 Tair(相容 Redis)所有資源。
您也可以自訂最小權限原則(允許OOS調用雲資料庫 Tair(相容 Redis)的DescribeInstances與FlushExpireKeys API),限定該角色只能執行當前任務。
操作步驟
訪問OOS控制台。
在左側導覽列,單擊
。單擊建立。
配置定時營運任務。
說明本文僅介紹關鍵步驟,其他參數請參見系統營運管理。
定時設定
本樣本選擇周期性重複執行,指定每天04:00與16:00執行。
同時指定規則結束時間為2024-03-31 00:00:00,表示該定時營運任務將在該時間點結束,不再執行。
選擇模板
在公用模板中搜尋ACS-Redis-FlushExpireKeys,並勾選該模板。
設定模板參數
選擇執行個體所在的地區,選擇目標執行個體。
在OOS扮演的RAM角色中選擇在前提條件中建立的RAM角色。
執行設定(可選)
該頁簽配置項可保持預設。
單擊建立,並在彈框中單擊確認。
當任務的執行狀態顯示生效中,表示該任務將根據定時設定自動執行。
後續步驟
您可以在定時營運工作清單中,單擊目標執行ID,進入任務詳情頁。在該頁面中,您可以查看或修改任務配置資訊、立即觸發執行、查看執行歷史資訊等。
同時,由於到期資料被刪除、記憶體得以回收,您也可以在效能監控中看到該執行個體的記憶體使用量率降低了。
相關文檔
您也可以在OOS中配置警示與事件營運,例如當記憶體使用量率(平均值)達到90%時,調用FlushExpireKeys API刪除已到期的Key。配置方式與本方案類似,配置入口為 ,更多資訊請參見建立警示營運任務。
關於Tair與Redis刪除到期資料的介紹,請參見Tair/Redis如何清除到期Key。