本頁面說明 Memorystore for Redis 適用的 maxmemory 政策和其他 Redis 設定。調整設定時,無須重新啟動 Redis 執行個體。
如要瞭解如何修改下列設定,請參閱「設定 Redis 執行個體」。
Maxmemory 政策
當 Redis 執行個體的記憶體已滿,但有新的寫入作業要執行時,Redis 會根據執行個體的 Maxmemory 政策撤銷金鑰,以便釋出空間來執行寫入作業。Memorystore for Redis 的預設 maxmemory 政策為 volatile-lru。您也可以使用下列其中一項 maxmemory 政策:
noeviction:Redis 執行個體達到 maxmemory 時會傳回錯誤。不會覆寫或逐出任何資料。allkeys-lfu:適用於 Redis 4.0 以上版本。從整個鍵集移除最少使用的 (LFU) 金鑰。allkeys-lru:從整個金鑰集逐出最近最少使用的 (LRU) 金鑰。volatile-lfu:適用於 Redis 4.0 以上版本。清除設有 TTL (存留時間) 到期時間的最少使用金鑰。volatile-lru:撤銷設定存留時間到期的最少使用 (LRU) 金鑰。allkeys-random:從整個鍵空間中逐出隨機鍵。volatile-random:從設有 TTL 到期時間的鍵中,隨機逐出鍵。volatile-ttl:從設有存留時間到期日的金鑰中,逐出存留時間最短的金鑰。
可修改的設定參數
建立或更新 Memorystore for Redis 執行個體時,可以修改下列參數。
| 參數 | 說明 | 可接受的值 |
|---|---|---|
| activedefrag | Redis 4.0 以上版本。釋放因標準 OSS Redis 記憶體片段化行為而占用的執行個體記憶體。 | no (預設)yes |
| 資料庫 | Redis 3.2 以上版本。 指定 Redis 伺服器上的資料庫數量。 | 1-100預設值為 16 |
| lazyfree-lazy-eviction | Redis 7.0 以上版本。啟用/停用延遲釋放以進行清除。no會停用這項設定。詳情請參閱「REDIS.CONF」 |
no (預設)yes |
| lazyfree-lazy-expire | Redis 7.0 以上版本。啟用/停用過期項目的延遲釋放。no會停用這項設定。詳情請參閱「REDIS.CONF」 |
no (預設)yes |
| lazyfree-lazy-user-del | Redis 7.0 以上版本。啟用/停用使用者 DEL 的延遲釋放功能。no 會停用這項設定。詳情請參閱「REDIS.CONF」 |
no (預設)yes |
| lazyfree-lazy-user-flush | Redis 7.0 以上版本。啟用/停用使用者清除的延遲釋放。no會停用這項設定。詳情請參閱「REDIS.CONF」 |
no (預設)yes |
| lfu-decay-time | Redis 4.0 以上版本。系統會將特定鍵的 LFU 頻率計數器時間 (以分鐘為單位) 除以 2,如果計數器小於 10,則會遞減 1。詳情請參閱 REDIS.CONF 檔案。 | 「long」資料類型的正整數 (預設值為 1) |
| lfu-log-factor | Redis 4.0 以上版本。決定頻率計數器如何表示重要點擊次數。修改預設設定前,請先瞭解 REDIS.CONF 檔案中的 lfu-log-factor 設定運作方式。 |
「long」資料類型的正整數 (預設值為 10) |
| maxmemory-clients | Redis 7.0 以上版本。這項設定可讓使用者控管用戶端的記憶體用量上限。 一般/發布訂閱用戶端的記憶體用量總計。如果達到上限,系統會撤銷記憶體用量最高的用戶端 |
預設值為 0% (無限制)。可接受的值為介於 0% 和 100% 之間的整數百分比值。代表用戶端儲存空間的執行個體 maxmemory 百分比上限。 |
| maxmemory-gb | 這項可調整的限制是以 GB 為單位。如果達到這項限制,您的移除政策就會生效。舉例來說,如果您有 10 GB 的執行個體,並將 maxmemory-gb 設為 8,當資料佔用 8 GB 的執行個體記憶體時,移除政策就會生效。因此您有 2 GB 的記憶體作為額外負擔。根據預設,maxmemory-gb 會設為執行個體容量。如要瞭解如何善用 maxmemory-gb 設定,請參閱 Memorystore 記憶體管理最佳做法。這項設定在Google Cloud 控制台中會顯示為 maxmemory-percent。使用控制台時,請將 maxmemory-percent 設定為執行個體容量的百分比,而非特定 GB 數。 |
以整數或小數表示的 GB 數。 示例: 10 指定 10 GB 的 maxmemory-gb。1.5 代表 1.5 GB。maxmemory-gbmaxmemory-gb 可減少至執行個體容量的 20%。 |
| maxmemory-policy | 指定執行個體資料達到 maxmemory-gb 限制時,Redis 應採取的行為。如要瞭解各項政策的行為,請參閱「Maxmemory 政策」。如要進一步瞭解開放原始碼 Redis 的 maxmemory 政策,請參閱開放原始碼 Redis 的 LRU 快取頁面。 |
noevictionallkeys-lruvolatile-lru (預設)allkeys-randomvolatile-randomvolatile-ttlvolatile-lfu (Redis 4.0 以上版本)allkeys-lfu (Redis 4.0 以上版本)
|
| notify-keyspace-events | 允許用戶端訂閱特定鍵空間事件的通知。詳情請參閱 Redis 網站上的「Redis Keyspace Notifications」頁面。 | "" (預設)K使用 __keyspace@ EKeyevent 事件,發布時使用 __keyevent@ g一般指令 (非類型專屬),例如 DEL、EXPIRE 或 RENAME $字串指令 l 清單指令s設定指令 h雜湊指令 z排序集指令 x過期事件 (每次金鑰過期時產生的事件) e逐出事件 (金鑰因 maxmemory 而遭逐出時產生的事件) Ag$lshzxe 的別名,因此「AKE」字串代表所有事件。 |
stream-node-max-bytes |
Redis 5.0 以上版本。Redis 串流資料結構會使用基數樹狀結構儲存項目。stream-node-max-bytes 參數會指定單一樹狀結構節點中可儲存項目的位元組數上限。達到上限後,新項目會儲存在新的樹狀節點中。 |
整數 0 以上。 (預設值=4096) 0 代表樹狀結構節點的大小不受限制。 |
stream-node-max-entries |
Redis 5.0 以上版本。Redis 串流資料結構會使用基數樹狀結構儲存項目。stream-node-max-entries 參數會指定單一節點可儲存的項目數量。達到這個上限後,新項目會儲存在新的樹狀結構節點中。 |
大於或等於 0 的整數。 (預設值為 100) 0 代表樹狀結構節點的項目數量不受限制。 |
timeout |
閒置用戶端連線遭到終止前的秒數。不過,如果 timeout 設為 0,閒置的用戶端就不會逾時,而且會保持連線,直到用戶端發出終止指令為止。
|
0 (預設值) 大於或等於 120 的整數 單位 = 秒 |
無法修改的設定參數
下表列出您無法在 Memorystore for Redis 中修改的 Redis 設定參數,以及這些參數的預設值。如要進一步瞭解這些設定參數,請參閱 Redis 設定說明文件。
| 參數 | 預設值 |
|---|---|
lua-time-limit |
5000 |
hash-max-ziplist-entries |
2048 |
hash-max-ziplist-value |
1024 |
list-max-ziplist-size |
-2 |
list-compress-depth . |
0 |
set-max-intset-entries |
512 |
zset-max-ziplist-entries |
1024 |
zset-max-ziplist-value |
1024 |
hll-sparse-max-byte |
3000 |
activerehashing |
是 |
hz |
10 |
databases |
16 |
maxclients |
65000 |
slowlog-log-slower-than |
10000 |
slowlog-max-len |
128 |
repl-diskless-load |
swapdb |
io-threads-do-reads |
是 |
後續步驟
- 如要進一步瞭解 Redis 設定,請前往開放原始碼 Redis 設定頁面