將 Redis 配置為快取
IBM Cloud® Databases for Redis 支援變更 Redis 資料庫配置,您可以使用它將 Redis 配置為快取。 當配置成快取時,Redis 會根據您定義的快取設定來收回舊資料,以利於新的資料。
即使配置為快取,Databases for Redis 部署仍會取得每日備份 Snapshot。 目前無法在部署上停用備份。 它們也會將部分資料寫入磁碟,以取得高可用性。 Redis 依賴複製 .rdb
檔案來重新同步追蹤者。
快取設定
若要配置快取,請調整部署的 maxmemory
及 maxmemory
設定。maxmemory
定義快取的大小。 maxmemory-policy
定義達到 maxmemory
限制時的收回行為。 此外,其他設定也會處理資料庫作業及調整。
maxmemory
依預設,maxmemory
設為資料節點可用記憶體的 80%,因此您的節點不會因系統資源而不足。 您可以調整此設定,但設定合理的限制。 否則,您的資料可能會佔用所有可用的記憶體,而且您的部署會耗盡資源。
maxmemory-policy
原則 | 行為 |
---|---|
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
原則中,如果沒有任何金鑰符合原則,則不會收回任何金鑰。
其他設定
原則 | 行為 | 附註 |
---|---|---|
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
設定作為一般用途快取的良好起始位置。 也可以將 maxmemory
和 maxmemory-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"
}
}'