本頁面說明 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
:將設定了 TTL 到期時間的最近最少使用 (LRU) 金鑰逐出。allkeys-random
:從整個鍵空間中驅逐隨機鍵。volatile-random
:從已設定 TTL 到期日的鍵中隨機淘汰鍵。volatile-ttl
:從已設定 TTL 到期日的金鑰中,剔除 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 以上版本。決定展示頻率計數器如何呈現按鍵點擊次數。修改預設設定前,請先瞭解 lfu-log-factor 設定在 REDIS.CONF 檔案中的運作方式。 |
'long' 資料類型 的正整數(預設值為 10) |
maxmemory-clients | Redis 7.0 以上版本這項設定可讓使用者控制用戶端的記憶體用量上限。 一般/pubsub 用戶端的記憶體用量總量。如果達到上限,系統會撤銷記憶體用量最高的用戶端 |
預設值為 0% (無限制)。可接受的值為介於 0% 和 100% 之間的整數百分比值。代表客戶端儲存空間受限的執行個體記憶體上限百分比。 |
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 指定 maxmemory-gb 為 10 GB。1.5 指定 maxmemory-gb 為 1.5 GB。maxmemory-gb 可降至執行個體容量的 20% 以下。 |
maxmemory-policy | 指定 Redis 在執行個體資料達到 maxmemory-gb 上限時的行為。如需各政策的行為說明,請參閱「Maxmemory 政策」。如要進一步瞭解開放原始碼 Redis maxmemory 政策,請參閱開放原始碼 Redis LRU 快取頁面 |
noeviction allkeys-lru volatile-lru (預設)allkeys-random volatile-random volatile-ttl volatile-lfu (Redis 4.0 以上版本)allkeys-lfu (Redis 4.0 以上版本)
|
notify-keyspace-events | 允許用戶端訂閱特定鍵值空間事件的通知。如需更多資訊,請參閱 Redis 網站上的 Redis Keyspace Notifications 頁面。 | "" (預設)K 以 __keyspace@ E 使用 __keyevent@ g 通用指令 (非類型專屬),例如 DEL、EXPIRE 或 RENAME $ 字串指令 l 清單指令 s 集合指令 h 雜湊指令 z 排序集合指令 x 已到期事件 (每次索引鍵到期時產生的事件) e 已淘汰事件 (因 maxmemory 而淘汰索引鍵時產生的事件) A g$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 設定頁面