支援的 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:將設定了 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@__ 前置字發布的 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 設定頁面