您可以根據業務情境對Tair (Redis OSS-compatible)執行個體的參數進行調優與自訂配置,已提升執行個體的效能與安全性。不同的引擎版本和架構支援的參數有所區別,本文為您介紹各參數的詳細說明。
注意事項
若設定參數時報錯
Parameter is not supported for current version,請升級小版本後重試,具體操作請參見升級小版本與代理版本。部分參數在提交修改後會自動重啟執行個體(重啟過程中執行個體會發生秒級閃斷)。在設定參數時,您需要關注目標參數的重啟生效列,更多資訊,請參見設定參數。
本文僅包含Redis開源版執行個體的參數,關於Tair(企業版)執行個體的參數(包含記憶體型、持久記憶體型和磁碟型)請參見Tair企業版配置參數列表。
支援的參數及說明
為便於閱讀和內容表達,本文的表格約定使用下述注釋:
✔️表示在該大版本或架構下,支援該參數。
❌表示在該大版本或架構下,不支援該參數。
資料庫核心參數
參數 | 說明 | 執行個體的大版本與架構 | ||||
7.0版本 | 6.0版本 | 5.0版本 | 4.0版本 | 2.8版本 | ||
#no_loose_check-whitelist-always | 開啟專用網路免密後,是否檢查用戶端的IP在執行個體白名單中。取值:
說明
| ❌ | ❌ | 標準️️✔️ 叢集✔️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️ 讀寫分離✔️ | ❌ |
#no_loose_disabled-commands | 設定禁用命令,可根據業務需求禁用某些高危命令或高時間複雜度的命令,例如FLUSHALL、FLUSHDB、KEYS、HGETALL、EVAL、EVALSHA、SCRIPT等。 說明
| 標準️️✔️ 叢集✔️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️ 讀寫分離✔️ |
#no_loose_sentinel-enabled | 在標準架構或叢集架構直連模式,開啟或關閉哨兵(Sentinel)相容模式,可選值:
| 標準️️✔️ 叢集✔️ 讀寫分離❌ | 標準️️✔️ 叢集✔️ 讀寫分離❌ | 標準️️✔️ 叢集✔️ 讀寫分離❌ | 標準️️✔️ 叢集✔️ 讀寫分離❌ | ❌ |
#no_loose_sentinel-password-free-access | 開啟哨兵模式時,是否允許免密執行Sentinel相關命令,取值:
| 標準️️✔️ 叢集✔️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️ 讀寫分離✔️ | ❌ | ❌ | ❌ |
#no_loose_sentinel-password-free-commands | 在開啟哨兵模式以及#no_loose_sentinel-password-free-access參數後,您還可以通過本參數添加額外的免密命令列表(預設為空白)。 重要
| 標準️️✔️ 叢集✔️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️ 讀寫分離✔️ | ❌ | ❌ | ❌ |
#no_loose_tls-min-version | 設定執行個體支援的TLS最低版本,取值:
| 標準️️❌ 叢集✔️ 讀寫分離✔️ | 標準️️❌ 叢集✔️ 讀寫分離✔️ | 標準️️❌ 叢集✔️ 讀寫分離✔️ | 標準️️❌ 叢集✔️ 讀寫分離✔️ | 標準️️❌ 叢集✔️ 讀寫分離✔️ |
appendfsync | AOF(AppendOnly File)持久化功能的fsync頻率,僅在appendonly參數開啟時生效,預設為everysec,不支援修改。 | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
appendonly | 開啟或關閉主節點的AOF持久化功能,取值:
| 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
| pubsub為限制對發布訂閱用戶端的輸出緩衝,預設為33554432 8388608 60。 normal為限制對普通用戶端的輸出緩衝,預設為524288000 0 0。 參數值格式均為
重要
| 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
dynamic-hz | 開啟或關閉動態hz,取值:
| 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️ 讀寫分離✔️ | ❌ | ❌ |
| 相容Redis 6.0及以下版本,預設使用ziplist作為Hash的編碼方式。當Hash對象同時滿足以下兩個條件時, 使用ziplist編碼。
| ❌ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
| 相容Redis 7.0版本起,預設使用listpack作為Hash的編碼方式。當Hash對象同時滿足以下兩個條件時, 使用listpack編碼。
| 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | ❌ | ❌ | ❌ | ❌ |
hz | 設定執行個體背景工作執行頻率,例如清除到期鍵任務。取值範圍為[1-500],預設為10,即每秒執行10次。 說明 該值越大,CPU資源消耗越多,但在到期鍵較多的情況下清理頻率也更高,同時執行個體能夠更精確地處理逾時。建議取值不超過100。 | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
latency-tracking | 是否開啟命令時延監控,取值:
說明 僅相容Redis 7.0及以上支援該參數。 | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | ❌ | ❌ | ❌ | ❌ |
lazyfree-lazy-eviction | 是否開啟基於lazyfree的驅逐功能,取值:
| 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | ❌ |
lazyfree-lazy-expire | 是否開啟基於lazyfree的到期Key刪除功能,取值:
| 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | ❌ |
lazyfree-lazy-server-del | DEL命令是否基於lazyfree非同步刪除資料,取值:
| 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | ❌ |
lazyfree-lazy-user-del | 執行DEL命令時是否基於lazyfree非同步刪除資料,取值:
| 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | ❌ | ❌ | ❌ |
lazyfree-lazy-user-flush | 是否將FLUSHDB、FLUSHALL、SCRIPT FLUSH、FUNCTION FLUSH命令自動轉換為Lazyfree非同步刪除模式,取值:
說明 僅相容Redis 7.0及以上支援該參數。 | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | ❌ | ❌ | ❌ | ❌ |
list-compress-depth | 列表中兩端不被壓縮的節點個數,取值範圍為[0-65535]。
| 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | ❌ |
list-max-ziplist-entries | 僅相容Redis 2.8版本支援這組參數。當List對象同時滿足以下兩個條件時, 使用ziplist編碼。
| ❌ | ❌ | ❌ | ❌ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
list-max-ziplist-value | ||||||
| 相容Redis 6.0及以下版本預設使用ziplist作為List的編碼方式(list-max-ziplist-size參數),相容Redis 7.0版本起預設使用listpack作為List的編碼方式(list-max-listpack-size參數)。
| 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | ❌ |
maxmemory-policy | 資料逐出策略。當執行個體記憶體不足,使用量達到Maxmemory時,會觸發資料逐出,您可以選擇不同的資料逐出策略。取值如下: 說明
| 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
maxmemory-eviction-tenacity | 資料逐出(Eviction)因子,用於設定每次資料逐出的延時,取值為[0-100],預設為10。
說明 僅Redis 7.0支援該參數。 | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | ❌ | ❌ | ❌ | ❌ |
active-expire-effort | 刪除到期Key(Expire)因子,用於設定每次刪除到期Key的延時,取值為[1-10],預設為1。數值越大刪除到期Key越快,同時消耗的CPU資源也更多。 | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | ❌ | ❌ | ❌ |
notify-keyspace-events | notify-keyspace-events的參數值可以是以下字元的任意組合,它指定了伺服器該發送哪些類型的通知。該參數將針對整個執行個體(所有DB)啟用通知,啟用後會額外消耗CPU,更多資訊請參見Redis keyspace notifications。
重要 輸入的參數中至少包含K或E, 否則不會有任何通知被分發。 例如您希望訂閱到期事件,您可以在參數設定中將該參數設定為 | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
set-max-intset-entries | 當Set集合內的資料符合以下條件時,會使用intset編碼。
| 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
slowlog-log-slower-than | 慢日誌的閾值,慢日誌將記錄執行時間超過該閾值的命令。單位為微秒(μs),預設為20000(即20毫秒),取值範圍10000~10000000。 | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
slowlog-max-len | 慢日誌最多儲存記錄條數,取值範圍100~10000,預設為1024。 | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
stream-node-max-bytes | Stream中每個宏節點(Macro Node)能夠佔用的最大記憶體,取值範圍:0~999,999,999,999,999。 說明 0表示無限制。 | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️ 讀寫分離✔️ | ❌ | ❌ |
stream-node-max-entries | Stream中每個宏節點中可儲存條目的最大數量,取值範圍:0~999,999,999,999,999。 說明 0表示無限制。 | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️ 讀寫分離✔️ | ❌ | ❌ |
tracking-table-max-keys | 設定Tracking Table中儲存Key數量的上限,取值為[0-1000000000],預設為1000000。 說明 僅Redis 7.0支援該參數。 | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | ❌ | ❌ | ❌ | ❌ |
timeout | 當用戶端的空閑時間達到指定秒數後,執行個體會關閉該串連,單位為秒,取值範圍為[0,100000],預設為0(表示不斷開任何串連)。 | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | ❌ |
| 相容Redis 6.0及以下版本預設使用ziplist作為Zset的編碼方式。當Zset同時滿足以下兩個條件時, 使用ziplist編碼。
| ❌ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
| 相容Redis 7.0版本起預設使用listpack作為Zset的編碼方式。當Zset同時滿足以下兩個條件時, 使用listpack編碼。
| 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | ❌ | ❌ | ❌ | ❌ |
bigkey-threshold | Top Key統計中大Key(元素數量多的Key)的元素數量閾值。預設2000個,取值範圍為[500-100000]。 說明 若參數設定未顯示此參數,請升級小版本後重試。 | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | ❌ | ❌ |
| Top Key統計中熱Key(按QPS)的統計閾值。預設5000,取值範圍為[100-100000]。 說明 僅小版本號碼7.0.18、6.0.2.9、5.5.2.9及以上支援此參數。 | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | ❌ | ❌ |
Proxy節點參數
代理(Proxy)節點提供的參數,僅叢集架構代理模式、讀寫分離架構執行個體支援下述參數。
參數 | 說明 |
cluster_compat_enable | 是否開啟原生Redis cluster文法相容,取值:
|
hello_enabled | 是否開啟通過HELLO命令切換協議RESP2、RESP3協議的開關。取值:
說明 僅Proxy 7.0.9及以上版本支援該參數。 |
max_session_processing | 單個串連允許堆積的最大請求個數,取值範圍為[10-10000000],預設為1000。 代理節點轉寄用戶端的請求給資料節點,但是未收到資料節點的回複,此時該請求即處於堆積狀態。該參數主要用於限制代理節點前後端處理能力差異導致的請求堆積,避免記憶體上漲的問題。 |
| 本組參數為可觀測效能力的一部分,設定後還需要開通審計日誌才會生效,統計周期為5秒/次。
說明
|
ptod_enabled | 是否將用戶端的IP地址透傳到資料節點,取值:
|
readonly_lua_route_ronode_enable | 開啟或關閉唯讀副本的Lua執行模式,取值:
|
read_request_only_ronode_whenrwsplit_enable | 開啟或關閉唯讀帳號請求定向轉寄,取值:
|
rt_threshold_ms | 代理節點中的慢日誌閾值,單位為毫秒(ms),取值範圍為[30-2000],預設為500。 說明 如果從代理節點向資料節點發出請求後,到代理節點收到響應結束的時間超過該閾值,則會產生一條慢日誌。 |
script_check_enable | 開啟或關閉代理節點對Lua指令碼的檢測,具體檢查項請參見Proxy對Lua的檢測項,取值:
|
sentinel_compat_enable | 在叢集架構代理模式或讀寫分離架構,開啟或關閉哨兵(Sentinel)相容模式,可選值:
|
transfer_subscrible_to_psubscrible_enable | 開啟或關閉SUBSCRIBE轉PSUBSCRIBE功能,取值:
|