全部產品
Search
文件中心

Tair (Redis® OSS-Compatible):通過OOS定期刪除Tair或Redis到期Key

更新時間:Oct 30, 2024

雲資料庫 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),限定該角色只能執行當前任務。

    RAM角色權限原則樣本:

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "kvstore:DescribeInstances",
                    "kvstore:FlushExpireKeys"
                ],
                "Resource": "*"
            }
        ]
    }

操作步驟

  1. 訪問OOS控制台

  2. 在左側導覽列,單擊自動化任務 > 定時營運

  3. 單擊建立

  4. 配置定時營運任務。

    說明

    本文僅介紹關鍵步驟,其他參數請參見系統營運管理

    定時設定

    本樣本選擇周期性重複執行,指定每天04:00與16:00執行。

    image

    同時指定規則結束時間為2024-03-31 00:00:00,表示該定時營運任務將在該時間點結束,不再執行。

    選擇模板

    公用模板中搜尋ACS-Redis-FlushExpireKeys,並勾選該模板。

    設定模板參數

    1. 選擇執行個體所在的地區,選擇目標執行個體。

    2. OOS扮演的RAM角色中選擇在前提條件中建立的RAM角色。

    執行設定(可選)

    該頁簽配置項可保持預設。

  5. 單擊建立,並在彈框中單擊確認

    當任務的執行狀態顯示生效中,表示該任務將根據定時設定自動執行。

後續步驟

您可以在定時營運工作清單中,單擊目標執行ID,進入任務詳情頁。在該頁面中,您可以查看或修改任務配置資訊、立即觸發執行、查看執行歷史資訊等。

同時,由於到期資料被刪除、記憶體得以回收,您也可以在效能監控中看到該執行個體的記憶體使用量率降低了。

相關文檔

  • 您也可以在OOS中配置警示與事件營運,例如當記憶體使用量率(平均值)達到90%時,調用FlushExpireKeys API刪除已到期的Key。配置方式與本方案類似,配置入口為自動化任務 > 警示與事件營運,更多資訊請參見建立警示營運任務

  • 關於Tair與Redis刪除到期資料的介紹,請參見Tair/Redis如何清除到期Key