您可以根據業務情境對雲原生記憶體資料庫Tair執行個體的參數進行調優與自訂配置,已提升Tair執行個體的效能與安全性。本文介紹各參數的詳細說明。
注意事項
支援的參數及說明
為便於閱讀和內容表達,本文的表格約定使用下述注釋:
✔️表示在該大版本或架構下,支援該參數。
❌表示在該大版本或架構下,不支援該參數。
記憶體型與持久記憶體型
參數 | 說明 | 執行個體系列與架構 | |
記憶體型 | 持久記憶體型 | ||
#no_loose_check-whitelist-always | 開啟專用網路免密後,是否檢查用戶端的IP在Tair白名單中。可選值:
說明 僅本地碟版執行個體支援設定該參數。 | 標準️️✔️ 叢集✔️ 讀寫分離✔️ | ❌ |
#no_loose_disabled-commands | 設定禁用命令,可根據業務需求禁用某些高危命令或高時間複雜度的命令,例如FLUSHALL、FLUSHDB、KEYS、HGETALL、EVAL、EVALSHA、SCRIPT等。 說明
| 標準️️✔️ 叢集✔️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️ 讀寫分離✔️ |
#no_loose_lua-strict-mode | 是否開啟Lua指令碼strict 模式。開啟後標準架構執行個體可以類似叢集架構,要求Lua指令碼中的資料Key必須由
說明 該參數僅在Tair記憶體型(相容Redis 6.0版本)和磁碟型中支援。 | 標準️️✔️ 叢集❌ 讀寫分離❌️ | ❌ |
#no_loose_publish-no-wait-result | 開啟該參數後,會提升Tair執行個體執行PUBLISH命令的吞吐效能,但PUBLISH命令傳回值總是0。
說明 該參數僅在Tair記憶體型(相容Redis 6.0版本)中支援。 | 標準️️✔️ 叢集✔️ 讀寫分離✔️ | ❌ |
sentinel_compat_enable | 在叢集架構代理模式或讀寫分離架構,開啟或關閉哨兵(Sentinel)相容模式,可選值:
| 標準️️❌ 叢集✔️ 讀寫分離✔️ | 標準️️❌ 叢集✔️ 讀寫分離✔️ |
#no_loose_sentinel-enabled | 在標準架構或叢集架構直連模式,開啟或關閉哨兵(Sentinel)相容模式,可選值:
| 標準️️✔️ 叢集✔️ 讀寫分離❌ | 標準️️✔️ 叢集✔️ 讀寫分離❌ |
#no_loose_sentinel-password-free-access | 開啟哨兵模式時,是否允許免密執行Sentinel相關命令,可選值:
| 標準️️✔️ 叢集✔️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️ 讀寫分離✔️ |
#no_loose_statistics-cmds | 本組參數為雲原生記憶體資料庫Tair可觀測效能力的一部分,設定後還需要配合審計日誌才會生效,統計周期為5秒/次。
說明
| 標準️️❌ 叢集✔️ 讀寫分離✔️ | ❌ |
#no_loose_statistics-ip-enable | 標準️️❌ 叢集✔️ 讀寫分離✔️ | ❌ | |
#no_loose_statistics-keys | 標準️️❌ 叢集✔️ 讀寫分離✔️ | ❌ | |
#no_loose_tls-min-version | 設定執行個體支援的TLS最低版本,可選值:
| 標準️️❌ 叢集✔️ 讀寫分離✔️ | ❌ |
active-expire-effort | 設定清理到期Key任務的主動性。增加該值可以使引擎更加主動地清理已到期的Key,減少已到期Key佔用的記憶體空間,但同時會使CPU使用率與延遲上升。取值範圍為1~10,預設值為1。 說明 該參數僅在Tair持久記憶體型支援。 | ❌ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
appendfsync | AOF(AppendOnly File)持久化功能的fsync頻率,僅在appendonly參數開啟時生效,預設為everysec,不支援修改。 | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
appendonly | 開啟或關閉主節點的AOF持久化功能,可選值:
| 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
client-output-buffer-limit pubsub | 限制對發布訂閱用戶端的輸出緩衝,參數值格式為
| 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
cluster_compat_enable | 在叢集架構代理模式或讀寫分離架構,開啟或關閉原生Redis cluster文法相容,可選值:
| 標準️️❌ 叢集✔️ 讀寫分離✔️ | 標準️️❌ 叢集✔️ 讀寫分離✔️ |
dynamic-hz | 開啟或關閉動態hz,可選值:
| 標準️️✔️ 叢集✔️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
globalvectorindex_enabled | TairVector全域索引開關,取值:
| 標準️️❌ 叢集✔️ 讀寫分離❌ | ❌ |
hash-max-ziplist-entries | 雜湊對象同時滿足以下兩個條件時, 使用ziplist編碼。
| 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
hash-max-ziplist-value | |||
hello_enabled | 在叢集架構代理模式或讀寫分離架構,是否開啟通過HELLO命令切換協議RESP2、RESP3協議的開關。取值:
說明 僅Proxy 7.0.9及以上版本支援該參數。 | 標準️️❌ 叢集✔️ 讀寫分離✔️ | 標準️️❌ 叢集✔️ 讀寫分離✔️ |
hz | 設定Tair背景工作執行頻率,例如清除到期鍵任務。取值範圍為1~500,預設值為10,即每秒執行10次。 說明 該值越大,CPU資源消耗越多,但在到期鍵較多的情況下清理頻率也更高,同時Tair能夠更精確地處理逾時。建議取值不要超過100。 | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
lazyfree-lazy-eviction | 是否開啟基於lazyfree的驅逐功能,可選值:
| 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
lazyfree-lazy-expire | 是否開啟基於lazyfree的到期Key刪除功能,可選值:
| 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
lazyfree-lazy-server-del | DEL命令是否基於lazyfree非同步刪除資料,可選值:
| 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
lazyfree-lazy-user-del | 執行DEL命令時是否基於lazyfree非同步刪除資料,可選值:
| ❌ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
list-compress-depth | 列表中兩端不被壓縮的節點個數,取值範圍0~65535。
| 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
list-max-ziplist-entries | 鏈表對象同時滿足以下兩個條件時, 使用ziplist編碼。
| ❌ | ❌ |
list-max-ziplist-value | |||
list-max-ziplist-size |
| 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
maxmemory-policy | 資料逐出策略。當Tair執行個體記憶體不足,使用量達到Maxmemory時,會觸發資料逐出,您可以選擇不同的資料逐出策略。取值如下: 說明
| 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
max_session_processing | 單個串連允許堆積的最大請求數。代理節點轉寄用戶端的請求給資料節點,但是未收到資料節點的回複,此時該請求即處於堆積狀態。該參數主要用於限制代理節點前後端處理能力差異導致的請求堆積,避免記憶體上漲的問題。 | 標準️️❌ 叢集✔️ 讀寫分離✔️ | ❌ |
notify-keyspace-events | notify-keyspace-events的參數值可以是以下字元的任意組合,它指定了伺服器該發送哪些類型的通知。該參數將針對整個執行個體(所有DB)啟用通知,啟用後會額外消耗CPU,更多資訊請參見Redis keyspace notifications。
重要 輸入的參數中至少包含K或E, 否則不會有任何通知被分發。 例如您希望訂閱到期事件,您可以在參數設定中將該參數設定為 | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
pena_rename_move_compatible_enabled | 是否啟用MOVE和RENAME系列命令相容模式,相關命令的時間複雜度為O(n),不同於原生Redis的O(1),若執行對象為大Key則耗時會較長,可選值:
說明 該參數僅在Tair持久記憶體型1.2.4及以上版本中支援。 | ❌ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
ptod_enabled | 在叢集架構代理模式或讀寫分離架構,是否將用戶端的IP地址通過代理節點透傳到資料節點,可選值:
| 標準️️❌ 叢集✔️ 讀寫分離✔️ | 標準️️❌ 叢集✔️ 讀寫分離✔️ |
query_cache_enabled | 是否啟用代理查詢快取功能,具體使用方法,請參見通過Proxy Query Cache最佳化熱點Key問題,該參數取值:
重要 由於代理節點中緩衝的熱點Key的索引值對資訊在有效時間內不會更新,在啟用該功能前,您需要確認業務上是否允許資料在緩衝有效時間內的 最終一致性 。 | 標準️️❌ 叢集✔️ 讀寫分離✔️ | 標準️️❌ 叢集✔️ 讀寫分離✔️ |
query_cache_expire | 快取資料的有效時間,單位為毫秒,取值:100~60000,預設值為1000。
| 標準️️❌ 叢集✔️ 讀寫分離✔️ | 標準️️❌ 叢集✔️ 讀寫分離✔️ |
query_cache_mode | 代理查詢快取的工作模式,取值:
重要 由於代理節點的緩衝空間有限(代理節點每個線程100 MB),若設定該參數的值為1,代理節點將按照LRU演算法淘汰Key,可能降低緩衝的命中率,從而引起整體效能的下降。 | 標準️️❌ 叢集✔️ 讀寫分離✔️ | 標準️️❌ 叢集✔️ 讀寫分離✔️ |
readonly_lua_route_ronode_enable | 開啟或關閉唯讀副本的Lua執行模式,可選值:
| 標準️️❌ 叢集❌️ 讀寫分離✔️ | ❌ |
read_request_only_ronode_whenrwsplit_enable | 開啟或關閉唯讀帳號請求定向轉寄,可選值:
| 標準️️❌ 叢集✔️️️️️ 讀寫分離✔️ | ❌ |
rt_threshold_ms | Proxy 伺服器中的慢日誌閾值,單位為毫秒(ms)。若Proxy 伺服器處理一個請求的時間超過該閾值,則會產生一條慢日誌。 說明 計時方式:從Proxy 伺服器向資料節點發出請求開始,到Proxy 伺服器收到響應結束。 | 標準️️❌ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️❌ 叢集✔️️️️️ 讀寫分離✔️ |
script_check_enable | 在叢集架構代理模式或讀寫分離架構,Proxy對Lua指令碼的檢測項,具體檢查項請參見Proxy對Lua的檢測項,可選值:
| 標準️️❌ 叢集✔️️️️️ 讀寫分離✔️ | ❌ |
set-max-intset-entries | 當Set集合內的資料符合以下條件時,會使用intset編碼。
| 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
slowlog-log-slower-than | 慢日誌的閾值,慢日誌將記錄執行時間超過該閾值的命令。單位為ms,預設值為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表示無限制。 | 標準️️✔️ 叢集✔️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
timeout | 當用戶端的空閑時間達到指定秒數後,Tair會關閉該串連,取值為[0,100000],預設為0(表示不斷開任何串連),單位為秒。 | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
transfer_subscrible_to_psubscrible_enable | 開啟或關閉SUBSCRIBE轉PSUBSCRIBE功能,可選值:
| 標準️️❌ 叢集✔️️️️️ 讀寫分離✔️ | ❌ |
ts-auto-del-empty-skey-enable | 當TairTS資料結構的Skey內部所有資料點都到期時,是否自動刪除Skey,可選值:
說明 該參數僅在記憶體型(相容Redis 6.0、7.0版本)24.7.0.0及以上版本中支援。 | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
zset-max-ziplist-entries | 排序集合對象同時滿足以下兩個條件時, 使用ziplist編碼。
| 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ | 標準️️✔️ 叢集✔️️️️️ 讀寫分離✔️ |
zset-max-ziplist-value |
磁碟型
參數 | 說明 | 磁碟型 |
#no_loose_disabled-commands | 設定禁用命令,可根據業務需求禁用某些高危命令或高時間複雜度的命令,例如FLUSHALL、FLUSHDB、KEYS、HGETALL、EVAL、EVALSHA、SCRIPT等。 說明
| 標準✔️️ |
#no_loose_lua-strict-mode | 是否開啟Lua指令碼strict 模式。開啟後標準架構執行個體可以類似叢集架構,要求Lua指令碼中的資料Key必須由
| 標準✔️️ |
latency-monitor-threshold | 設定延遲閾值,超過閾值時間的事件會被記錄延遲事件,取值範圍:0 ~ 10000000,單位為毫秒。 | 標準✔️ |
max-write-batch-size | 表示執行命令的過程中,在記憶體中產生磁碟儲存格式資料的大小限制,單位為Byte,取值範圍:0-1073741824(1 GB),預設為0,表示不設上限。 說明 若資料分布和請求容易產生較大的中間資料,推薦設定成1073741824(即1 GB),防止記憶體溢出。 | 標準✔️ |
slowlog-log-slower-than | 慢日誌的閾值,慢日誌將記錄執行時間超過該閾值的命令。單位為ms,預設值為20000(即20毫秒),取值範圍10000~10000000。 | 標準✔️ |
slowlog-max-len | 慢日誌最多儲存記錄條數,取值範圍:100~10000,預設值為1024。 | 標準✔️️ |
scan-background-interval-ms | 執行個體後台主動對Key進行輪詢,判斷資料的TTL等資訊並進行記憶體回收。
說明 若您對後台記憶體回收要求較高,您可以適當調小scan-background-interval-ms值。但加大輪詢頻率也會佔用更多的磁碟頻寬,為不影響使用者請求,不建議大幅提升輪詢頻率。 | 標準✔️️ |
batch-scan-count | 標準✔️️ | |
txn-isolation-lock | 是否開啟事務鎖,開啟後允許磁碟型執行個體執行MULTI、EXEC和Lua指令碼相關命令,事務鎖功能可能會導致效能下降10%,可選值:
| 標準✔️️ |