支援的 Redis 設定

本頁面說明 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-gb
maxmemory-gb 可減少至執行個體容量的 20%。
maxmemory-policy 指定執行個體資料達到 maxmemory-gb 限制時,Redis 應採取的行為。如要瞭解各項政策的行為,請參閱「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 事件,發布時使用 __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 設定頁面