IBM Cloud Docs
將 Redis 配置為快取

將 Redis 配置為快取

IBM Cloud® Databases for Redis 支援變更 Redis 資料庫配置,您可以使用它將 Redis 配置為快取。 當配置成快取時,Redis 會根據您定義的快取設定來收回舊資料,以利於新的資料。 即使配置為快取,Databases for Redis 部署仍會取得每日備份 Snapshot。 目前無法在部署上停用備份。 它們也會將部分資料寫入磁碟,以取得高可用性。 Redis 依賴複製 .rdb 檔案來重新同步追蹤者。

快取設定

若要配置快取,請調整部署的 maxmemorymaxmemory 設定。maxmemory 定義快取的大小。 maxmemory-policy 定義達到 maxmemory 限制時的收回行為。 此外,其他設定也會處理資料庫作業及調整。

maxmemory

依預設,maxmemory 設為資料節點可用記憶體的 80%,因此您的節點不會因系統資源而不足。 您可以調整此設定,但設定合理的限制。 否則,您的資料可能會佔用所有可用的記憶體,而且您的部署會耗盡資源。

maxmemory-policy

可用的Redis驅逐策略
原則 行為
noeviction 當達到 maxmemory 限制時,不會收回金鑰並傳回錯誤。
allkeys-lfu 保留常用鍵,並移除最不常使用的 (LFU) 鍵。
volatile-lfu 移除最不常使用的金鑰,並將到期欄位設為 true。
allkeys-lru 先收回近期使用較少的 (LRU) 索引鍵。
volatile-lru 從先到期的金鑰集中收回最近使用過的金鑰 (LRU)。
allkeys-random 隨機收回金鑰。
volatile-random 從到期的金鑰集中隨機收回金鑰。
volatile-ttl 收回到期的金鑰,並先嘗試收回存活時間較短 (TTL) 的金鑰。

使用 allkeys 原則,演算法會選擇要從所有金鑰集中收回的金鑰。 使用 volatile 原則,演算法會選擇收回已 過期 或已設定 存活時間(TTL) 的金鑰。 在 volatile 原則中,如果沒有任何金鑰符合原則,則不會收回任何金鑰。

其他設定

Redis快取設定
原則 行為 附註
appendonly 預設值 yes。 啟用將 Redis 資料寫入磁碟。 如果您要快取資料,則想要將此值設為 no
stop-writes-on-bgsave-error 預設值 yes。 如果 Redis 偵測到不成功的備份 Snapshot,則會停止接受寫入。 對於快取,您可以設為 no
maxmemory-samples 調整 LRU 演算法,預設值為 5 近似 LRU 演算法

設定範例快取

若要調整部署的配置,請使用您要變更的設定及其新值來傳送 JSON 物件。

您可以直接從 Redis cli-client 使用 CONFIG SET,但所做的變更不是永久的。 使用Cloud Databases CLI 外掛程式API 變更部署的設定檔。 如需相關資訊,請參閱 變更 Redis 配置

例如,Redis 文件建議將 allkeys-lru 設定作為一般用途快取的良好起始位置。 也可以將 maxmemorymaxmemory-samples 保留為其預設值。

若要從 CLI 配置快取,您可以使用以下命令:

ibmcloud cdb deployment-configuration '<INSTANCE_NAME_OR_CRN>' '{"configuration":{"maxmemory-policy":"allkeys-lru", "appendonly":"no", "stop-writes-on-bgsave-error":"no"}}'

若要透過 API 設定相同的配置,您可以使用以下命令:

curl -X PATCH 'https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/configuration/schema' \
-H "Authorization: Bearer $APIKEY" \
-H "Content-Type: application/json" \
-d '{"configuration":{
        "maxmemory-policy":"allkeys-lru",
        "appendonly":"no",
        "stop-writes-on-bgsave-error":"no"
      }
    }'