1. 程式人生 > 實用技巧 >Redis——配置詳解

Redis——配置詳解

前言

redis : redis 6.0.9

內容

#Redis配置檔案示例。
#
#注意,為了讀取配置檔案,Redis必須是
#以檔案路徑作為第一個引數開頭:
#
#./redis-server /path/to/redis.conf

#關於單位的註釋:當需要記憶體大小時,可以指定
#以通常的1k 5GB 4M格式,依此類推:
#
#1k => 1000位元組
#1kb => 1024位元組
#1m => 1000000位元組
#1mb => 1024 * 1024位元組
#1g => 1000000000位元組
#1gb => 1024 * 1024 * 1024位元組
#
#單位不區分大小寫,因此1GB 1Gb 1gB都相同。

################################## INCLUDES ###################################

#在此處包含一個或多個其他配置檔案。 如果您
#具有可用於所有Redis伺服器的標準模板,但也需要
#自定義一些每伺服器設定。 包含檔案可以包括
#個其他檔案,因此請明智地使用此檔案。
#
#注意,選項“ include”不會被命令“ CONFIG REWRITE”重寫
#來自admin或Redis Sentinel。 由於Redis始終使用最後處理的
#將line作為配置指令的值,最好將include
#在此檔案的開頭,以避免在執行時覆蓋配置更改。
#
#如果您有興趣使用include覆蓋配置
#選項,最好將include作為最後一行。
#
# include /path/to/local.conf
# include /path/to/other.conf

################################## MODULES #####################################

#在啟動時載入模組。如果伺服器無法載入模組
#它會中止。可以使用多個loadmodule指令。
#
#loadmodule /path/to/my_module.so
#loadmodule /path/to/other_module.so

################################## NETWORK #####################################

#預設情況下,如果未指定“ bind”配置指令,則Redis偵聽
#用於來自主機上所有可用網路介面的連線。
#使用以下命令可以僅收聽一個或多個選定的介面
#“ bind”配置指令,後接一個或多個IP地址。
#
# 例子:
#
#bind 192.168.1.100 10.0.0.1
#bind 127.0.0.1 :: 1
#
#~~~警告~~~如果執行Redis的計算機直接暴露於
#網際網路,繫結到所有介面都是危險的,並且會暴露
#例項給網際網路上的所有人。因此,預設情況下,我們取消註釋
#遵循bind指令,這將強制Redis僅在
#IPv4環回介面地址(這意味著Redis將只能
#接受來自執行該主機的同一主機的客戶端連線。
#
#如果您確定要立即偵聽所有介面
#只需注意以下幾行。
bind 127.0.0.1
#保護模式是一層安全保護,以避免
#訪問和利用Internet上開啟的Redis例項。
#
#啟用保護模式時,如果:
#
#1)伺服器未使用以下命令明確繫結到一組地址
#“ bind”指令。
#2)未配置密碼。
#
#伺服器僅接受來自客戶端的連線,這些客戶端從
#IPv4和IPv6回送地址127.0.0.1和:: 1,並且來自Unix域
#個套接字。
#
#預設情況下啟用保護模式。 只有在以下情況下才應禁用它
#您確定要讓其他主機的客戶端連線到Redis
#即使未配置身份驗證,也沒有特定的介面集
#使用“ bind”指令顯式列出。
protected-mode yes
#接受指定埠上的連線,預設為6379(IANA#815344)。
#如果指定了埠0,則Redis將不會在TCP套接字上偵聽。
port 6379

#TCP listen()積壓。
#
#在每秒請求數很高的環境中,您需要大量積壓訂單
#避免客戶端連線速度慢的問題。注意Linux核心
#將默默地將其截斷為/proc/sys/net/core/somaxconn的值,因此
#確保同時提高somaxconn和tcp_max_syn_backlog的值
#以獲得理想的效果。
tcp-backlog 511

#Unix套接字。
#
#指定用於偵聽的Unix套接字的路徑
#傳入連線。沒有預設設定,因此Redis不會收聽
#如果未指定,則在UNIX套接字上。
#
#unixsocket /tmp/redis.sock
#unixsocketperm 700

#客戶端閒置N秒後關閉連線(0禁用)
timeout 0

#TCP保持活動狀態。
#
#如果不為零,請使用SO_KEEPALIVE向不存在的客戶端傳送TCP ACK
通訊數量。這很有用,原因有兩個:
#
#1)檢測死亡的同伴。
#2)強制中間的網路裝置考慮連線
#還活著。
#
#在Linux上,指定的值(以秒為單位)是用於傳送ACK的時間段。
#注意,關閉連線需要兩倍的時間。
#在其他核心上,期限取決於核心配置。
#
#此選項的合理值為300秒,這是新的
#Redis預設從Redis 3.2.1開始。
tcp-keepalive 300
################################# TLS/SSL #####################################

#預設情況下,禁用TLS / SSL。要啟用它,請使用“ tls-port”配置
#指令可用於定義TLS偵聽埠。要在TLS上啟用TLS
#預設埠,使用:
#
# port 0
# tls-port 6379

#配置X.509證書和私鑰以用於認證
#伺服器連線到連線的客戶端,主伺服器或叢集對等伺服器。這些檔案應該是
#PEM格式化。
#
#tls-cert-file redis.crt
#tls-key-file redis.key

#配置DH引數檔案,啟用Diffie-Hellman(DH)金鑰交換。
#
#tls-dh-params-file redis.dh

#配置CA證書捆綁包或目錄以認證TLS / SSL
#客戶和同行。 Redis要求至少配置一個明確的配置
其中#個,不會隱式使用系統範圍的配置。
#
#tls-ca-cert-file ca.crt
#tls-ca-cert-dir /etc/ssl/ certs

#預設情況下,TLS埠上的客戶端(包括副本伺服器)是必需的
#使用有效的客戶端證書進行身份驗證。
#
#如果指定為“ no”,則不需要也不接受客戶端證書。
#如果指定“可選”,則接受客戶端證書,並且必須是
#有效(如果提供),但不是必需的。
#
# tls-auth-clients no
# tls-auth-clients optional

#預設情況下,Redis副本不會嘗試建立TLS連線
#與它的主人。
#
#使用以下指令在複製連結上啟用TLS。
#
# tls-replication yes

#預設情況下,Redis群集匯流排使用純TCP連線。啟用
#用於匯流排協議的TLS,請使用以下指令:
#
# tls-cluster yes

#明確指定要支援的TLS版本。允許的值不區分大小寫
#幷包含“ TLSv1”,“ TLSv1.1”,“ TLSv1.2”,“ TLSv1.3”(OpenSSL> = 1.1.1)或
#任何組合。要僅啟用TLSv1.2和TLSv1.3,請使用:
#
# tls-protocols "TLSv1.2 TLSv1.3"

#配置允許的密碼。有關更多資訊,請參見ciphers(1ssl)聯機幫助頁。
#關於此字串的語法。
#
#注意:此配置僅適用於<= TLSv1.2。
#
# tls-protocols "TLSv1.2 TLSv1.3"

#配置允許的TLSv1.3密碼套件。有關更多資訊,請參見ciphers(1ssl)聯機幫助頁。
#有關此字串的語法的資訊,尤其是針對TLSv1.3的語法
#密碼套件。
#
#tls-ciphersuites TLS_CHACHA20_POLY1305_SHA256

#選擇密碼時,請使用伺服器的首選項而不是客戶端
#首選項。預設情況下,伺服器遵循客戶端的首選項。
#
# tls-prefer-server-ciphers yes

#預設情況下,啟用了TLS會話快取,以便更快,更便宜
#支援它的客戶端重新連線。使用以下指令禁用
#快取。
#
# tls-session-caching no

#更改預設的TLS會話快取數。零值設定快取
#為無限大小。預設大小為20480。
#
#tls-session-cache-size 5000

#更改快取的TLS會話的預設超時時間。預設超時為300
#秒。
#
#tls-session-cache-timeout 60
################################# GENERAL #####################################

#預設情況下,Redis不會作為守護程式執行。如果需要,請使用“是”。
#注意,Redis守護程序將在/var/run/redis.pid中寫入一個pid檔案。
daemonize no

#如果您是從upstart或systemd執行Redis,則Redis可以與您的
#監督樹。選項:
#無監督-無監督互動
#受監督的新貴-通過將Redis置於SIGSTOP模式來指示新貴
#在新貴的作業配置中需要“預期停止”
#受監督的systemd-通過將READY = 1寫入$ NOTIFY_SOCKET來發出訊號systemd
#有監督的自動-根據以下資訊檢測暴發戶或系統方法
#UPSTART_JOB或NOTIFY_SOCKET環境變數
#注意:這些監視方法僅表示“過程已準備就緒”。
#他們無法連續ping回您的主管。
supervised no

#如果指定了pid檔案,則Redis會在啟動時將其寫入指定位置
#並在出口處將其刪除。
#
#當伺服器以非守護程序執行時,如果沒有,則不建立pid檔案
#在配置中指定。守護伺服器時,pid檔案
#即使未指定,也會使用,預設為“ /var/run/redis.pid”。
#
#盡力建立一個pid檔案:如果Redis無法建立它
#不會發生任何不良情況,伺服器將啟動並正常執行。
pidfile /var/run/redis_6379.pid

#指定伺服器的詳細級別。
#這可以是以下之一:
#除錯(很多資訊,對於開發/測試很有用)
#詳細(很多很少有用的資訊,但不會像除錯級別那樣混亂)
#通知(適度冗長,可能是您想要的產品)
#警告(僅記錄非常重要/重要的訊息)
loglevel notice

#指定日誌檔名。也可以使用空字串強制
#Redis登入到標準輸出。請注意,如果您使用標準
#輸出用於日誌記錄但要守護程序,日誌將傳送到/ dev / null
logfile ""

#要啟用到系統記錄器的日誌記錄,只需將'syslog-enabled'設定為yes,
#並根據需要更新其他syslog引數。
# syslog-enabled no

#指定系統日誌標識。
#syslog-ident redis

#指定系統日誌工具。必須是USER或在LOCAL0-LOCAL7之間。
#syslog-facility local0

#設定資料庫數量。預設資料庫是DB 0,可以選擇
#使用SELECT <dbid>在每個連線的基礎上不同
#dbid是介於0和'databases'-1之間的數字
databases 16

#預設情況下,Redis僅在開始登入時才顯示ASCII藝術徽標。
#標準輸出,如果標準輸出是TTY。基本上這意味著
#通常徽標僅在互動式會話中顯示。
#
#但是可以強制4.0之前的行為並始終顯示
#通過將以下選項設定為yes,在啟動日誌中使用ASCII藝術徽標。
always-show-logo yes
############################## SNAPSHOTTING ################# ###############
#
#將資料庫儲存在磁碟上:
#
#  save <seconds> <changes>
#
#如果給定的秒數和給定的秒數都將儲存資料庫
#針對資料庫的寫入運算元。
#
#在下面的示例中,行為將是儲存:
#在900秒(15分鐘)後,如果至少更改了1個鍵
#300秒(5分鐘)後,如果至少更改了10個按鍵
#60秒後,如果至少更改了10000個鍵
#
#注意:您可以通過註釋掉所有“儲存”行來完全禁用儲存。
#
#也可以刪除所有先前配置的儲存
通過新增帶有單個空字串引數的save指令獲得#點
#如以下示例所示:
#
#   save ""

save 900 1
save 300 10
save 60 10000

#預設情況下,如果啟用了RDB快照,Redis將停止接受寫入
#(至少一個儲存點),並且最新的後臺儲存失敗。
#這將使使用者(很難)意識到資料沒有持久化
#正確地放在磁碟上,否則沒有人會注意到,有的機會
#災難將會發生。
#
#如果後臺儲存過程將再次開始工作,則Redis將
#自動允許再次寫入。
#
#但是,如果您已經設定了對Redis伺服器的適當監視
#和永續性,您可能要禁用此功能,以便Redis將
#即使磁碟出現問題,仍繼續照常工作,
#許可權,等等。
stop-writes-on-bgsave-error yes

#轉儲.rdb資料庫時使用LZF壓縮字串物件?
#預設情況下啟用壓縮,因為它幾乎總是勝利。
#如果要在儲存子項中儲存一些CPU,請將其設定為“ no”,但是
#如果您具有可壓縮的值或鍵,則資料集可能會更大。
rdbcompression yes

#從RDB版本5開始,在檔案末尾放置了CRC64校驗和。
#這樣可以使格式更耐腐敗,但效能
#在儲存和載入RDB檔案時點選支付(大約10%),因此您可以將其禁用
#以獲得最佳效能。
#
#在禁用校驗和的情況下建立的RDB檔案的校驗和為零,這將使
#告訴載入程式碼跳過檢查。
rdbchecksum yes

#轉儲資料庫的檔名
dbfilename dump.rdb

#在沒有永續性的情況下刪除複製中使用的RDB檔案
#啟用。預設情況下,此選項是禁用的,但是在某些情況下
#出於法規或其他安全方面的考慮,RDB檔案保留在
#由主伺服器提供磁碟以提供副本,或由副本儲存在磁碟上
#為了載入它們以進行初始同步,應刪除
# 儘快。請注意,此選項僅在同時具有AOF的例項中起作用
#和RDB永續性禁用,否則將被完全忽略。
#
#一種獲得相同效果的替代方法(有時更好)是
#在主例項和副本例項上使用無盤複製。然而
#對於副本,無盤並非總是一種選擇。
rdb-del-sync-files no
#工作目錄。
#
#資料庫將被寫入此目錄,並指定檔名
#以上使用'dbfilename'配置指令。
#
#也將在此目錄中建立“僅追加檔案”。
#
#請注意,您必須在此處指定目錄,而不是檔名。
dir ./
############################### REPLICATION ################ #################

#主副本複製。 使用copyof作為Redis例項的副本
#另一個Redis伺服器。 儘快瞭解有關Redis複製的幾件事。
#
#   +------------------+      +---------------+
#   |      Master      | ---> |    Replica    |
#   | (receive writes) |      |  (exact copy) |
#   +------------------+      +---------------+
#
#1)Redis複製是非同步的,但是您可以將master配置為
#如果至少看起來沒有連線,則停止接受寫入
#給定數量的副本。
#2)Redis副本能夠與以下伺服器執行部分重新同步
#master(如果複製連結丟失了相對較少的數量)
#    時間。您可能需要配置複製積壓大小(請參閱下一個
此檔案的#個部分),根據您的需要具有合理的價值。
#3)複製是自動的,不需要使用者干預。之後
#網路分割槽副本自動嘗試重新連線到主資料庫
#並與它們重新同步。
#
# replicaof <masterip> <masterport>

#如果主伺服器受密碼保護(使用“ requirepass”配置)
下面的#指令)可以告訴副本在進行身份驗證之前
#啟動複製同步過程,否則主伺服器將
#拒絕副本請求。
#
# masterauth <master-password>
#
#但是,如果您使用的是Redis ACL(對於Redis版本,則還不夠)
#6或更高版本),並且預設使用者無法執行PSYNC
#命令和/或複製所需的其他命令。在這種情況下
#更好地配置特殊使用者以用於複製,並指定
#masteruser配置如下:
#
# masteruser <username>
#
#指定masteruser時,副本將根據其身份驗證
#master使用新的AUTH形式:AUTH <使用者名稱> <密碼>。

#當副本失去與主資料庫的連線時,或複製時
#仍在進行中,副本可以以兩種不同的方式起作用:
#
#1)如果複製副本服務過時資料設定為“是”(預設值),則複製副本將
#仍然會回覆客戶的請求,可能包含過期的資料,或者
如果這是第一次同步,則#資料集可能只是空的。
#
#2)如果copy-serve-stale-data設定為“ no”,則副本將回復
#除以下命令外,所有命令均出現錯誤“正在與主機進行同步”:
#INFO,REPLICAOF,AUTH,PING,SHUTDOWN,REPLCONF,角色,CONFIG,SUBSCRIBE,
#UNSUBSCRIBE,PSUBSCRIBE,PUNSUBSCRIBE,PUBLISH,PUBSUB,COMMAND,POST,
#主機和延遲。
#
replica-serve-stale-data yes
#您可以配置副本例項以接受或不接受寫入。 反對
#複製副本例項可能有助於儲存一些臨時資料(因為資料
與主伺服器重新同步後,寫在副本上的#將很容易刪除),但是
如果客戶由於以下原因寫信,#也會引起問題。
#配置錯誤。
#
#由於Redis 2.6預設情況下,副本是隻讀的。
#
#注意:只讀副本並非旨在向不受信任的客戶端公開
# 在網上。 它只是防止例項濫用的保護層。
#預設仍然是隻讀副本匯出所有管理命令
#,例如CONFIG,DEBUG等。 在一定程度上您可以改善
#使用'rename-command'隱藏所有副本的只讀副本的安全性
#管理/危險命令。
replica-read-only yes
#複製同步策略:磁碟或套接字。
#
#無法繼續執行新副本和重新連線副本
#複製過程剛剛收到差異,需要做的是所謂的
#“完全同步”。 RDB檔案從主機傳輸到
#個副本。
#
#傳輸可以兩種不同的方式發生:
#
#1)支援磁碟:Redis主伺服器建立一個新過程,該過程寫入RDB
#檔案在磁碟上。之後檔案由父級傳輸
#逐步處理副本。
#2)無盤:Redis主伺服器建立一個新程序,該程序直接寫入
#將RDB檔案複製到副本套接字,而完全不接觸磁碟。
#
#使用磁碟支援的複製時,在生成RDB檔案時,會有更多副本
#可以在當前子級中排隊並與RDB檔案一起使用
#生成RDB檔案完成其工作。改為使用無盤複製
#傳輸開始後,新的副本將進入佇列,並且新
#傳輸將在當前傳輸終止時開始。
#
#使用無盤複製時,主伺服器等待可配置數量的
#開始傳輸之前的時間(以秒為單位),希望倍數
#副本將到達,並且傳輸可以並行化。
#
#使用慢速磁碟和快速(大頻寬)網路,進行無盤複製
#效果更好。
repl-diskless-sync no
#啟用無盤複製後,可以配置延遲
#伺服器等待以生成通過套接字傳輸RDB的子代
#複製到副本。
#
#這很重要,因為一旦轉移開始,就無法提供服務
#個新副本到達,將排隊等待下一次RDB傳輸,因此
#伺服器等待延遲以便讓更多副本到達。
#
#延遲以秒為單位指定,預設為5秒。 禁用
#完全將其設定為0秒,傳輸將盡快開始。
repl-diskless-sync-delay 5
#------------------------------------------------- ----------------------------
#警告:RDB無盤載入是實驗性的。由於在此設定中,副本
#不會立即將RDB儲存在磁碟上,這可能會導致資料丟失
#故障轉移。 RDB無盤負載+ Redis模組不處理I / O讀取也可能
#導致Redis在初始同步期間發生I / O錯誤時中止
#舞臺與高手。僅在執行自己的操作時使用。
#------------------------------------------------- ----------------------------
#
#複製副本可以直接從複製連結載入從複製連結讀取的RDB
#套接字,或將RDB儲存到檔案中,並在檔案完全讀取後讀取
#從主人那裡收到的。
#
#在許多情況下,磁碟的速度比網路慢,並且儲存和載入速度
#RDB檔案可能會增加複製時間(甚至會增加主資料庫的複製時間
#在寫記憶體和從緩衝區中複製)。
#但是,直接從套接字解析RDB檔案可能意味著我們擁有
#在完整的rdb被清除之前重新整理當前資料庫的內容
#收到。因此,我們有以下選擇:
#
#“ disabled”-不要使用無盤負載(首先將rdb檔案儲存到磁碟)
#“ on-empty-db”-僅在完全安全時才使用無盤載入。
#“ swapdb”-解析時在RAM中保留當前資料庫內容的副本
#直接從套接字獲取資料。請注意,這需要
#足夠的記憶體,如果沒有足夠的記憶體,則可能會殺死OOM。
repl-diskless-load disabled
#副本以預定義的間隔將PING傳送到伺服器。有可能
#使用repl_ping_replica_period選項更改此間隔。預設值
#值為10秒。
#
#repl-ping-replica-period 10

#以下選項為以下項設定複製超時:
#
#1)從副本的角度來看,在SYNC期間進行批量傳輸I / O。
#2)從副本(資料,Ping)的角度來看,主超時。
#3)從主伺服器角度來看,副本超時(REPLCONF ACK ping)。
#
#重要的是要確保該值大於該值
#為repl-ping-replica-period指定,否則將檢測到超時
#每次主伺服器和副本伺服器之間的流量較低時。預設值
#值為60秒。
#
#repl-timeout 60

#在SYNC之後禁用副本套接字上的TCP_NODELAY?
#
#如果選擇“是”,則Redis將使用較少數量的TCP資料包,並且
#減少將資料傳送到副本的頻寬。但這可能會增加
#出現在副本端的資料,最長40毫秒,
#Linux核心使用預設配置。
#
#如果選擇“否”,則資料在副本端出現的延遲將
#減少但更多頻寬將用於複製。
#
#預設情況下,我們針對低延遲進行了優化,但在流量非常高的情況下
#或在距離主副本和副本很多跳的情況下,將其設定為“是”可能
#成為一個好主意。
repl-disable-tcp-nodelay no
#設定複製積壓大小。積壓是積累的緩衝區
#副本斷開連線一段時間後的副本資料,以便當
#複製副本想重新連線,通常不需要完全重新同步,但是
#部分重新同步就足夠了,只需將部分資料傳遞給副本
#斷開連線時錯過了。
#
#複製積壓越大,副本可以承受的時間越長
#斷開連線,以後可以執行部分​​重新同步。
#
#僅在連線至少一個副本時分配積壓。
#
#repl-backlog-size 1mb

#在主伺服器一段時間內沒有連線的副本後,待辦事項將為
#被釋放。以下選項可配置所需的秒數
#從過去的副本斷開連線的時間開始,進行積壓
#緩衝區被釋放。
#
#注意副本不會釋放積壓的超時,因為它們可能是
#稍後晉升為碩士,應該能夠正確地“部分
#reynchronize”與其他副本:因此它們應始終積累積壓。
#
#值0表示從不釋放積壓。
#
#repl-backlog-ttl 3600

#副本優先順序是Redis在INFO中釋出的整數
#輸出。 Redis Sentinel使用它來選擇要升級的副本
#如果主伺服器不再正常工作,則進入主伺服器。
#
#優先順序低的副本更適合升級,因此
#例如,如果有三個副本的優先順序分別為10、100、25 Sentinel
#將選擇優先順序為10的優先順序最低的那個。
#
#但是,特殊優先順序0表示副本無法執行
#為主角色,因此優先順序為0的副本永遠不會被
#Redis前哨升級。
#
#預設情況下,優先順序為100。
replica-priority 100
#如果少於以下數量,則主機可能會停止接受寫入
已連線N個副本,延遲小於或等於M秒。
#
#N個副本必須處於“聯機”狀態。
#
#必須以秒為單位的滯後時間必須小於等於指定值
#從副本接收到的最後ping,通常每秒傳送一次。
#
#此選項不能保證N個副本將接受寫入,但是
#將限制在丟失副本的情況下暴露視窗,以防副本數量不足
#可用,以指定的秒數為單位。
#
#例如,需要至少3個滯後<= 10秒的副本,請使用:
#
# min-replicas-to-write 3
# min-replicas-max-lag 10
#
#將一個或另一個設定為0將禁用該功能。
#
#預設情況下,min-replicas-to-write設定為0(禁用功能),並且
#min-replicas-max-lag設定為10。

#Redis主伺服器能夠列出連線的地址和埠
#以不同方式複製。例如,“ INFO複製”部分
#提供此資訊,除其他工具外,該資訊還用於
#Redis Sentinel以發現副本例項。
#此資訊可用的另一個地方是
#主機的“ ROLE”命令。
#
#副本通常報告的列出的IP地址和埠為
通過以下方式獲得的#:
#
#IP:通過檢查對等地址自動檢測到該地址
副本用於與主伺服器連線的套接字的編號。
#
#埠:複製過程中副本通過該埠進行通訊
#握手,通常是副本使用的埠
#監聽連線。
#
#但是,當埠轉發或網路地址轉換(NAT)為
#使用,實際上可以通過不同的IP和埠訪問副本
#對。副本可以使用以下兩個選項,以便
#向其主人報告一組特定的IP和埠,以便同時顯示INFO
#和ROLE將報告這些值。
#
#如果您只需要覆蓋兩個選項,則無需同時使用這兩個選項
#埠或IP地址。
#
# replica-announce-ip 5.5.5.5
# replica-announce-port 1234
#############################按鍵跟蹤################# ################

#Redis為客戶端的值快取實現伺服器輔助的支援。
#使用無效表來實現,該表記住
#1600萬個插槽,哪些客戶端可能具有某些金鑰子集。反過來
#用於將無效訊息傳送到客戶端。請
#檢查此頁面以瞭解有關該功能的更多資訊:
#
#https://redis.io/topics/client-side-caching
#
#為客戶端啟用跟蹤時,將假定所有隻讀查詢
#要快取:這將迫使Redis在無效資訊中儲存資訊
#表。修改金鑰後,此類資訊將被清除,並且
#無效訊息傳送到客戶端。但是,如果工作量為
#在讀取中占主導地位,Redis可以按順序使用越來越多的記憶體
#跟蹤許多客戶端獲取的金鑰。
#
#因此,可以為
#無效表。預設情況下將其設定為1M的金鑰,並且一旦達到此限制
到達#,Redis將開始移出失效表中的鍵
#即使它們沒有被修改,只是為了回收記憶體:這將依次
#強制客戶端使快取的值無效。基本上是桌子
#最大大小是您要花費的伺服器記憶體之間的權衡
#端跟蹤有關誰快取了什麼以及客戶端功能的資訊
#在記憶體中保留快取的物件。
#
#如果將該值設定為0,則表示沒有限制,Redis將
#在失效表中保留所需數量的鍵。
#在“統計資訊”資訊部分中,您可以找到有關
在每個給定時刻,失效表中的#個鍵。
#
#注意:在廣播模式下使用鍵跟蹤時,不使用任何記憶體
#在伺服器端,因此此設定無用。
#
#tracking-table-max-keys 1000000
################################# SECURITY ################ ####################

#警告:由於Redis速度非常快,外部使用者可以嘗試
#在現代機器上每秒可讀取100萬個密碼。這意味著你
#應該使用非常強的密碼,否則它們很容易被破解。
#注意,因為密碼實際上是客戶端之間的共享機密
#和伺服器,並且不應由任何人記住密碼
#可以很容易地是來自/ dev / urandom或其他型別的長字串,因此可以使用
#長而難以猜測的密碼,無法進行暴力攻擊。

#Redis ACL使用者的定義如下:
#
#使用者<使用者名稱> ... ACL規則...
#
# 例如:
#
#使用者工作者+ @ list + @ connection〜jobs:* on> ffa9203c493aa99
#
#特殊使用者名稱“預設”用於新連線。如果這個使用者
#具有“ nopass”規則,那麼新連線將立即得到認證
#作為“預設”使用者,而無需通過
#AUTH命令。否則,如果未將“預設”使用者標記為“ nopass”
#連線將以未經身份驗證的狀態開始,並且需要
#AUTH(或HELLO命令AUTH選項),以便進行身份驗證和
#開始工作。
#
#描述使用者可以執行的操作的ACL規則如下:
#
#on啟用使用者:可以以該使用者身份進行身份驗證。
#off禁用使用者:不再可能進行身份驗證
#與該使用者,但是已經通過身份驗證的連線
#仍然可以使用。
#+ <命令>允許執行該命令
#-<命令>禁止執行該命令
#+ @ <category>允許執行此類中的所有命令
#具有有效類別的名稱,例如@ admin,@ set,@ sortedset,...
#依此類推,請參閱server.c檔案中的完整列表,其中
#描述並定義了Redis命令表。
#特殊類別@all表示所有命令,但當前
#存在於伺服器中,以後會載入
#通過模組。
#+ <command> | subcommand允許使用否則的特定子命令
#禁用命令。請注意,此表格不是
#可以像-DEBUG | SEGFAULT一樣被否定,但是
#僅以“ +”開頭的新增劑。
#allcommands + @ all的別名。請注意,這意味著執行的能力
#所有將來通過模組系統載入的命令。
#nocommands-@ all的別名。
#〜<pattern>新增可以在其中提及的鍵的模式
#條命令。例如〜*允許所有鍵。圖案
#是一種球形樣式的模式,類似於KEYS之一。
#可以指定多個模式。
#allkeys〜*的別名
#resetkeys重新整理允許的鍵模式列表。
#> <密碼>將此密碼新增到使用者的有效密碼列表中。
#例如> mypass將“ mypass”新增到列表中。
#此指令清除“ nopass”標誌(請參閱下文)。
#<< password>從有效密碼列表中刪除此密碼。
#nopass刪除使用者的所有設定密碼,然後使用者
#被標記為不需要密碼:這意味著每個
#密碼將對此使用者無效。如果該指令是
#用於預設使用者,每個新連線都會
#立即通過預設使用者進行身份驗證,而無需
#任何必需的顯式AUTH命令。注意“ resetpass”
#指令將清除此條件。
#resetpass重新整理允許的密碼列表。而且去除
#“ nopass”狀態。在“ resetpass”之後,使用者沒有關聯
#個密碼,沒有新增就無法進行身份驗證
#一些密碼(或稍後將其設定為“ nopass”)。
#reset執行以下操作:resetpass,resetkeys,off,
#-@ all。使用者立即返回到相同的狀態
#建立後。
#
#ACL規則可以以任何順序指定:例如,您可以以
#個密碼,然後是標誌或金鑰模式。但是請注意,新增劑
#和減法規則將根據順序更改含義。
#例如,請參見以下示例:
#
#使用者alice在+ @ all -DEBUG〜*> somepassword上
#
#這將允許“驢友”使用所有命令,但
#DEBUG命令,因為+ @ all將所有命令新增到命令集中
#alice可以使用,後來刪除了DEBUG。但是,如果我們顛倒順序
如果有兩個ACL規則,結果將有所不同:
#
#使用者alice在-DEBUG + @ all〜*> somepassword
#
#現在,當alice的允許集中還沒有命令時,DEBUG被刪除。
#命令,以後添加了所有命令,因此使用者將能夠
#執行所有操作。
#
#基本上,ACL規則是從左到右處理的。
#
#有關ACL配置的更多資訊,請參閱
#Redis網站位於https://redis.io/topics/acl

#ACL日誌
#
#ACL日誌跟蹤失敗的命令和關聯的身份驗證事件
#與ACL。 ACL日誌可用於對阻止的失敗命令進行故障排除
#通過ACL。 ACL日誌儲存在記憶體中。您可以使用以下方法回收記憶體
#ACL日誌重置。在下面定義ACL日誌的最大條目長度。
acllog-max-len 128
#使用外部ACL檔案
#
#可以在此檔案中代替在此處配置使用者
#一個僅列出使用者的獨立檔案。兩種方法不能混合使用:
#如果您在此處配置使用者並同時啟用外部
#ACL檔案,伺服器將拒絕啟動。
#
#外部ACL使用者檔案的格式與
#在redis.conf中用於描述使用者的格式。
#
#aclfile /etc/redis/users.acl

#重要說明:從Redis 6開始“ requirepass”只是一種相容性
在新的ACL系統之上的#層。選項效果將只是設定
#預設使用者的密碼。客戶仍將使用
#像往常一樣使用AUTH <password>,或更明確地使用AUTH default <password>
#如果它們遵循新協議:兩者都會起作用。
#
#requirepass foobared

#命令重新命名(不建議使用)。
#
#------------------------------------------------- -----------------------
#警告:儘可能避免使用此選項。而是使用ACL移除
#個來自預設使用者的命令,並將它們僅放置在您的某些管理員使用者中
#建立用於管理目的。
#------------------------------------------------- -----------------------
#
#可以在共享中更改危險命令的名稱
# 環境。例如,可以將CONFIG命令重新命名為某些內容
#難以猜測,因此仍可供內部使用工具使用
#但不適用於一般客戶。
#
#示例:
#
#重新命名命令CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
#
#也可以通過將命令重新命名為命令來完全殺死命令
#一個空字串:
#
#rename-command CONFIG ""
#
#請注意,更改登入到
#AOF檔案或傳輸到副本可能會導致問題。
################################# CLIENTS ############## ######################

#設定同時連線的最大客戶端數。 預設
#此限制設定為10000個客戶端,但是如果Redis伺服器不是
#能夠配置程序檔案限制以允許指定的限制
#允許的最大客戶端數設定為當前檔案限制
#減32(因為Redis保留了一些檔案描述符供內部使用)。
#
#一旦達到限制,Redis將關閉所有新發送的連線
#錯誤“達到最大客戶端數”。
#
#重要提示:使用Redis群集時,最大連線數也是
#與叢集匯流排共享:叢集中的每個節點將使用兩個
#個連線,一個傳入,另一個傳出。 重要的是
#如果群集很大,則相應地限制。
#
#maxclients 10000
############################## 記憶體管理 ################## ##############

#設定記憶體使用限制為指定的位元組數。
#當達到記憶體限制時,Redis將嘗試刪除金鑰
#根據選擇的驅逐策略(請參閱maxmemory-policy)。
#
#如果Redis無法根據策略刪除金鑰,或者策略為
#設定為'noeviction',Redis將開始回覆命令錯誤
#將使用更多的記憶體,例如SET,LPUSH等,並將繼續
#回覆諸如GET之類的只讀命令。
#
#當將Redis用作LRU或LFU快取時,通常使用此選項
#設定例項的硬碟限制(使用“ noeviction”策略)。
#
#警告:如果您將副本附加到例項上且啟用了maxmemory,
#減去提供副本所需的輸出緩衝區的大小
#從已用的記憶體數量開始,以便網路問題/重新同步
#不觸發退出鍵的迴圈,反過來輸出
#複製副本緩衝區已滿,有被刪除的金鑰DEL觸發了刪除
#更多的鍵,依此類推,直到資料庫完全清空。
#
#簡而言之...如果您附加了副本,建議您設定一個較低的
#maxmemory的限制,以便系統上有一些可用的RAM用於複製
#個輸出緩衝區(但如果策略為“ noeviction”,則不需要此緩衝區)。
#
#maxmemory <bytes>

#MAXMEMORY POLICY:maxmemory時,Redis將如何選擇要刪除的內容
# 到達了。您可以從以下行為中選擇一種:
#
#volatile-lru->使用近似的LRU驅逐,只有具有過期集的金鑰。
#allkeys-lru->使用近似的LRU退出任何密​​鑰。
#volatile-lfu->使用近似的LFU驅逐,只有具有過期集的鍵。
#allkeys-lfu->使用近似的LFU退出任何密​​鑰。
#volatile-random->刪除具有過期集的隨機金鑰。
#allkeys-random->刪除隨機金鑰,任何金鑰。
#volatile-ttl->刪除最接近到期​​時間(較小的TTL)的金鑰
#noeviction->不要逐出任何東西,只需在寫操作中返回錯誤。
#
#LRU表示最近最少使用
#LFU表示最少使用
#
#LRU,LFU和volatile-ttl均使用近似值實現
#隨機演算法。
#
#注意:使用上述任何策略,Redis都會在寫入時返回錯誤
#操作,如果沒有合適的退出鍵。
#
#在撰寫本文時,這些命令是:set setnx setex append
#incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd
#sinter sinterstore sunion sunionstore sdiff sdiffstore zadd鋅鋅合金
#zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby
#getset mset msetnx exec排序
#
#預設為:
#
#maxmemory-policy noeviction
#LRU,LFU和最小TTL演算法不是精確演算法,而是近似演算法
#演算法(以節省記憶體),因此您可以對其進行調整以提高速度或
# 準確性。預設情況下,Redis將檢查五個鍵並選擇一個
#最近最少使用,您可以使用以下方法更改樣本大小
#配置指令。
#
#預設值5產生足夠好的結果。 10非常接近
#真正的LRU,但消耗更多的CPU。 3更快,但不是很準確。
#
#maxmemory-samples 5

#從Redis 5開始,預設情況下副本將忽略其maxmemory設定
#(除非在故障轉移後或手動提升為主節點)。它的意思是
#退出金鑰將僅由主機處理,傳送
#DEL命令作為副本在主控端退出到副本。
#
#此行為可確保母版和副本保持一致,並且通常
#您想要的內容,但是如果副本是可寫的,或者您想要副本
#具有不同的記憶體設定,並且您確定執行了所有寫操作
#到副本是冪等的,則可以更改此預設值(但請確保
#瞭解您在做什麼。
#
#請注意,由於預設情況下該副本不會退出,因此它可能最終會使用更多副本
#記憶體比通過maxmemory設定的記憶體多(某些緩衝區可能
#在副本上更大,否則資料結構有時可能會佔用更多記憶體
#等)。因此,請確保您監視副本並確保它們
#具有足夠的記憶體,永遠不會在記憶體不足之前達到真正的記憶體不足狀態
#master達到配置的maxmemory設定。
#
#replica-ignore-maxmemory yes

#Redis通過兩種方式回收過期的金鑰:在訪問這些金鑰時
#發現已過期,並且在後臺,也就是所謂的
#“活動的過期金鑰”。金鑰空間被緩慢地互動掃描
#尋找可回收的過期金鑰,以便可以釋放記憶體
過期的金鑰數量,將在短期內不再訪問。
#
#到期週期的預設工作量將嘗試避免超過
#百分之十的過期金鑰仍在記憶體中,並將嘗試避免消耗
#超過總記憶體的25%,並增加系統延遲。然而
#可以增加通常設定為的過期“努力”
#“ 1”,取更大的值,最大取值“ 10”。在最大值
#系統將使用更多的CPU,週期更長(從技術上講,
#更高的延遲),並且可以容忍更少的已過期金鑰仍然存在
#在系統中。在記憶體,CPU和延遲之間進行權衡。
#
#active-expire-effort 1
############################ LAZY FREEING #################### #################

#Redis有兩個刪除鍵的原語。一個叫做DEL,是一個阻塞
#刪除物件。這意味著伺服器停止處理新命令
#為了在同步中回收與物件關聯的所有記憶體
# 方式。如果刪除的鍵與小物件相關聯,則需要時間
#為了執行DEL命令非常小,可與大多數其他裝置相比
#Redis中的O(1)或O(log_N)命令。但是,如果金鑰與
#包含數百萬個元素的聚合值,伺服器可以阻止
#長時間(甚至幾秒鐘)以完成操作。
#
#由於上述原因,Redis還提供了非阻塞刪除原語
#,例如UNLINK(非阻塞DEL)和FLUSHALL的ASYNC選項,以及
#FLUSHDB命令,以便在後臺回收記憶體。這些命令
#在固定時間內執行。另一個執行緒將逐步釋放
#儘可能快地在後臺物件。
#
#FLUSHALL和FLUSHDB的DEL,UNLINK和ASYNC選項是使用者控制的。
#由應用程式的設計決定何時是一個好的
#使用一個或另一個的想法。但是,Redis伺服器有時必須
#刪除鍵或重新整理整個資料庫,這是其他操作的副作用。
#特別是Redis會獨立於使用者呼叫中的物件刪除物件
#以下方案:
#
#1)驅逐時,由於maxmemory和maxmemory策略配置,
#以便為新資料騰出空間,而無需遍歷指定的
#記憶體限制。
#2)由於過期:當一個金鑰具有關聯的生存時間(請參見
#EXPIRE命令)必須從記憶體中刪除。
#3)由於將資料儲存在鍵上的命令的副作用,該鍵可能會
#    已經存在。例如,RENAME命令可能會刪除舊金鑰
#內容被另一內容替換時。同樣的SUNIONSTORE
#或帶有STORE選項的SORT可能會刪除現有金鑰。 SET命令
#本身會刪除指定金鑰的所有舊內容以進行替換
#使用指定的字串。
#4)在複製過程中,當副本使用以下命令執行完全重新同步時:
#它的主人,整個資料庫的內容被刪除以便
#載入剛傳輸的RDB檔案。
#
#在上述所有情況下,預設設定都是以阻止方式刪除物件,
#就像是否呼叫了DEL。但是,您可以專門配置每種情況
#以便以非阻塞方式釋放記憶體,例如UNLINK
使用以下配置指令呼叫了#。
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
#對於替換使用者程式碼DEL呼叫的情況也是可能的
#用UNLINK呼叫不容易,修改DEL的預設行為
使用以下配置,使#命令的行為與UNLINK完全相同
#指令:
lazyfree-lazy-user-del no
############################## THREADED I / O ############## ###################

#Redis主要是單執行緒的,但是有某些執行緒
#操作,例如UNLINK,緩慢的I / O訪問和其他
#在側執行緒上執行。
#
#現在也可以處理Redis客戶端套接字的讀寫
#在不同的I / O執行緒中。由於特別是寫作如此緩慢,通常
#Redis使用者使用流水線以加快Redis的效能
#核心,併產生多個例項以擴充套件規模。使用I / O
#執行緒可以輕鬆地將Redis加速兩次,而無需訴諸
#對例項進行流水線處理或分片。
#
#預設情況下禁用執行緒,我們建議僅在計算機中啟用它
#至少具有4個或更多核心,剩下至少一個備用核心。
#使用8個以上的執行緒不太會有幫助。我們也建議使用
#僅在確實存在效能問題的情況下,使用Redis進行執行緒化的I / O
#個例項可以使用很大一部分CPU時間,否則
#使用此功能毫無意義。
#
#因此,例如,如果您有四個核心的盒子,請嘗試使用2或3個I / O
#個執行緒,如果您有8個核心,請嘗試使用6個執行緒。為了
#enable I / O執行緒使用以下配置指令:
#
#io-threads 4
#
#將io-threads設定為1只會照常使用主執行緒。
#啟用I / O執行緒後,我們僅使用執行緒進行寫操作,即
#執行緒化write(2)系統呼叫並將客戶端緩衝區傳輸到
#插座。但是,也可以啟用讀取和
#使用以下配置指令解析協議,方法是設定
#它是:
#
#io-threads-do-reads no
#
#通常,執行緒讀取無濟於事。
#
#注意1:無法在執行時通過以下方式更改此配置指令
#配置設定當SSL為時,Aso此功能當前不起作用
#啟用。
#
#注意2:如果要使用redis-benchmark測試Redis加速,請
#確保您也使用執行緒化模式執行基準測試本身
#--threads選項以匹配Redis執行緒數,否則您將不會
#能夠注意到改進。

########################### KERNEL OOM CONTROL #################### ###########

#在Linux上,可以向核心提示OOM殺手級程序
#記憶體不足時應先被殺死。
#
#啟用此功能可使Redis主動控制oom_score_adj值
#取決於其所有流程。預設分數將
#嘗試先殺死後臺子程序,然後
#個副本在高手面前被殺死。
oom-score-adj no
#使用oom-score-adj時,此指令控制使用的特定值
#用於主,副本和後臺子程序。 值範圍-1000至
#1000(越高意味著越有可能被殺死)。
#
#非特權程序(不是root,並且沒有CAP_SYS_RESOURCE功能)
#可以自由增加其值,但不能將其降低到其初始值以下
#個設定。
#
#伺服器使用相對於oom_score_adj的初始值的值
#開始。 由於初始值通常為0,因此它們通常會與
#個絕對值。
oom-score-adj-values 0 200 800
############################ APPEND ON MODE ################# ##############

#預設情況下,Redis非同步將資料集轉儲到磁碟上。此模式是
#在許多應用程式中都足夠好,但是Redis程序或
#停電可能會導致幾分鐘的寫入丟失(取決於
#配置的儲存點)。
#
#僅附加檔案是一種替代的永續性模式,可提供
#更好的耐久性。例如使用預設資料fsync策略
#(請參閱配置檔案中的後面部分),Redis可能僅丟失一秒鐘的寫操作。
#戲劇性事件,例如伺服器斷電,或者一次寫入(如果有的話)
#Redis程序本身發生了錯誤,但是作業系統是
#仍能正常執行。
#
#可以同時啟用AOF和RDB永續性,而不會出現問題。
#如果啟動時啟用了AOF,則Redis將載入AOF,即檔案
#具有更好的耐久性保證。
#
#請檢查http://redis.io/topics/persistence以獲取更多資訊。

appendonly no

#僅附加檔案的名稱(預設值:“ appendonly.aof”)

appendfilename "appendonly.aof"

#fsync()呼叫告訴作業系統實際在磁碟上寫入資料
#而不是等待輸出緩衝區中的更多資料。某些作業系統會真正重新整理
#磁碟上的資料,某些其他作業系統將嘗試儘快進行處理。
#
#Redis支援三種不同的模式:
#
#否:不要fsync,只要讓OS在需要時重新整理資料即可。快點。
#always:每次僅寫入追加日誌後的fsync。慢,最安全。
#everysec:每秒僅同步一次fsync。妥協。
#
#預設為“ everysec”,因為通常是
#速度和資料安全。您可以自行決定是否可以放鬆
#“ no”將使作業系統在以下情況時重新整理輸出緩衝區
#它希望獲得更好的效能(但如果您能夠接受
#有些資料丟失會考慮預設的持久化模式(即快照),
#或相反,請使用“總是”,該速度非常慢,但比
#每秒鐘。
#
#更多詳細資訊,請檢視以下文章:
#http://antirez.com/post/redis-persistence-demystified.html
#
#如果不確定,請使用“ everysec”。

# appendfsync always
appendfsync everysec
# appendfsync no

#當AOF fsync策略設定為always或everysec,並且有背景
#儲存過程(後臺儲存或AOF日誌後臺重寫)為
#在某些Linux配置中,對磁碟執行大量I / O
#Redis可能在fsync()呼叫中阻塞的時間過長。請注意,沒有針對
#當前,因為即使在其他執行緒中執行fsync也會阻塞
#我們的同步write(2)呼叫。
#
#為了減輕此問題,可以使用以下選項
#可以防止在主程序中呼叫fsync()時
#BGSAVE或BGREWRITEAOF正在進行中。
#
#這意味著當另一個孩子正在儲存時,Redis的永續性是
#與“ appendfsync none”相同。實際上,這意味著
#在最壞的情況下可能會丟失多達30秒的日誌記錄(使用
#預設Linux設定)。
#
#如果您有延遲問題,請將其設為“是”。否則將其保留為
從耐久性的角度來看,“#”是最安全的選擇。

no-appendfsync-on-rewrite no

#自動重寫僅附加檔案。
#Redis能夠自動重寫隱式呼叫的日誌檔案
當AOF日誌大小增加指定百分比時,#BGREWRITEAOF。
#
#這是這樣的:Redis會記住AOF檔案的大小。
#最新重寫(如果自重新啟動以來未發生任何重寫,則為
#使用啟動時的AOF)。
#
#將此基本大小與當前大小進行比較。如果當前大小是
#大於指定的百分比,將觸發重寫。也
#您需要指定要重寫的AOF檔案的最小大小,這
#即使在百分比增加的情況下也可以避免重寫AOF檔案
#已達到,但仍然很小。
#
#指定零百分比以禁用自動AOF
#重寫功能。

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

#在Redis的最後發現AOF檔案被截斷
#啟動過程,當AOF資料重新載入到記憶體中時。
#當執行Redis的系統時可能會發生
#崩潰,尤其是在沒有安裝ext4檔案系統的情況下
#data = ordered選項(但是Redis本身不會發生這種情況
#崩潰或中止,但作業系統仍可正常執行)。
#
#Redis可以在發生這種情況時退出並顯示錯誤,也可以載入
#儘可能的資料(現在是預設值),如果找到AOF檔案則開始
#在末尾被截斷。以下選項控制此行為。
#
#如果aof-load-truncated設定為yes,則會載入截短的AOF檔案並
#Redis伺服器開始發出日誌以通知使用者該事件。
#否則,如果該選項設定為no,伺服器將中止執行一個錯誤
#並拒絕啟動。當選項設定為無,使用者需要
#在重新啟動之前使用“ redis-check-aof”實用程式修復AOF檔案
# 伺服器。
#
#請注意,如果在中間發現AOF檔案已損壞
#伺服器仍將退出並出現錯誤。 此選項僅在以下情況下適用
#Redis將嘗試從AOF檔案中讀取更多資料,但位元組數不足
#將被發現。
aof-load-truncated yes

#重寫AOF檔案時,Redis可以在
#AOF檔案可加快重寫和恢復速度。 啟用此選項時
重寫的AOF檔案上的#由兩個不同的節組成:
#
#[RDB檔案] [AOF尾巴]
#
#載入時,Redis會識別AOF檔案以“ REDIS”開頭
#字串並載入帶字首的RDB檔案,然後繼續載入AOF
# 尾巴。
aof-use-rdb-preamble yes
############################## LUA SCRIPTING ################ ###############

#Lua指令碼的最大執行時間(以毫秒為單位)。
#
#如果達到最大執行時間,Redis將記錄指令碼
#在最長允許時間後仍在執行,並將開始執行
#回覆有錯誤的查詢。
#
#當長時間執行的指令碼超過最大執行時間時,僅
#SCRIPT KILL和SHUTDOWN NOSAVE命令可用。 第一個可以是
#用於停止尚未呼叫任何寫命令的指令碼。 第二
#是在執行寫命令的情況下關閉伺服器的唯一方法
#已由指令碼發出,但使用者不想等待自然
#終止指令碼。
#
#將其設定為0或負值以無警告地無限執行。
lua-time-limit 5000
############################### REDIS CLUSTER ################ ###############

#普通Redis例項不能屬於Redis叢集;只有節點
#在叢集節點可以的情況下啟動。為了啟動一個Redis例項
#cluster node使群集支援取消註釋以下內容:
#
#cluster-enabled yes

#每個群集節點都有一個群集配置檔案。該檔案不是
#旨在手動編輯。它由Redis節點建立和更新。
#每個Redis群集節點都需要一個不同的群集配置檔案。
#確保在同一系統上執行的例項沒有
#重疊的叢集配置檔名。
#
#cluster-config-file nodes-6379.conf

#群集節點超時是節點必須無法訪問的毫秒數
#將其視為失敗狀態。
#其他大多數內部時間限制是節點超時的倍數。
#
#cluster-node-timeout 15000

#發生故障的主伺服器的副本將避免在其資料出現時啟動故障轉移
#看起來太舊了。
#
#沒有簡單的方法可以使副本實際具有精確的度量
#它的“資料年齡”,因此執行以下兩項檢查:
#
#1)如果有多個副本可以進行故障轉移,則它們交換訊息
#為了嘗試使副本具有最佳優勢
#複製偏移(已處理來自主伺服器的更多資料)。
#副本將嘗試按偏移量獲得排名,並應用於開始
故障轉移的數量與它們的等級成正比的延遲。
#
#2)每個副本都計算與
#它的主人。這可以是最後收到的ping或命令(如果主伺服器
#仍處於“已連線”狀態),或者自
#與主伺服器斷開連線(如果複製連結當前斷開)。
#如果最後一次互動太舊,副本將不會嘗試故障轉移
#。
#
#使用者可以調整點“ 2”。具體來說,副本將無法執行
#故障轉移(如果自從與主機進行最後一次互動以來)
#經過的次數大於:
#
#(節點超時*叢集副本有效性因子)+ repl-ping-replica-period
#
#例如,如果節點超時為30秒,並且cluster-replica-validity-factor
#為10,並假設預設的repl-ping-replica-period為10秒,則
#副本如果無法與主副本通訊,則不會嘗試進行故障轉移
#超過310秒。
#
#較大的群集副本有效性因子可能允許資料過舊的副本進行故障轉移
#master,但值太小可能會阻止群集執行以下操作:
#完全選擇一個副本。
#
#為了獲得最大可用性,可以設定cluster-replica-validity-factor
#的值為0,這意味著副本將始終嘗試對
#master,無論他們上次與master互動的時間如何。
#(但是,他們將始終嘗試按比例分配延遲
#偏移排名)。
#
#零是唯一能夠保證所有分割槽恢復正常的值
#群集將始終能夠繼續。
#
#cluster-replica-validity-factor 10

#群集副本能夠遷移到孤立的主資料庫(即主資料庫)
#沒有可用的副本。這提高了叢集能力
#抵抗失敗,否則孤立的主節點無法進行故障轉移
#如果沒有可用的副本則失敗。
#
#僅當仍然存在至少一個副本時,副本伺服器才會遷移到孤立的主伺服器
#給定其舊主副本的其他工作副本的數量。這個號碼
#是“移民壁壘”。遷移障礙為1表示副本
#僅在其主資料庫至少有其他1個工作副本時才會遷移
#依此類推。它通常反映出每個副本所需的副本數
#叢集中的master。
#
#預設為1(僅當主伺服器保留至少
#一個副本)。要禁用遷移,只需將其設定為非常大的值即可。
#可以設定為0,但僅在除錯和危險時有用
#生產中。
#
#cluster-migration-barrier 1

#預設情況下,Redis群集節點如果檢測到它們,則停止接受查詢
#至少是一個未顯示的雜湊槽(沒有可用的節點為其提供服務)。
#如果叢集部分關閉,則採用這種方式(例如,一定範圍的雜湊槽)
#不再包含)所有群集最終將變得不可用。
#再次覆蓋所有插槽後,它將自動返回可用狀態。
#
#但是有時您希望叢集的子集正常工作,
#繼續接受對仍然存在的鍵空間部分的查詢
#覆蓋。為此,只需設定cluster-require-full-coverage
#選項為否。
#
#cluster-require-full-coverage yes

#此選項設定為yes時,可防止副本嘗試對其進行故障轉移
#在主伺服器故障期間的主伺服器。但是主控仍然可以執行
#手動故障轉移(如果被迫這樣做)。
#
#這在不同的情況下很有用,尤其是在n多個的情況
#資料中心操作,如果不希望的話,我們希望一側永遠不會升級
#如果發生直流故障。
#
#cluster-replica-no-failover no

#此選項設定為yes時,允許節點在
#叢集處於關閉狀態,只要它認為自己擁有插槽即可。
#
#這在兩種情況下很有用。第一種情況是當應用程式
#在節點故障或網路分割槽期間不需要資料的一致性。
#快取的一個例子,只要節點有資料
#應該能夠提供服務。
#
#第二個用例用於不符合建議的配置
#三個分片,但要啟用叢集模式並在以後擴充套件。一種
#1或2分片配置中的master中斷導致對
#沒有設定此選項的整個群集,設定了該選項後,只會發生寫中斷。
#如果沒有法定人數的主持人,則插槽所有權不會自動更改。
#
# cluster-allow-reads-when-down no

#為了設定您的叢集,請確保閱讀文件
#可從http://redis.io網站獲得。

######################### CLUSTER DOCKER/NAT support ################### #####

#在某些部署中,Redis群集節點地址發現失敗,因為
#個地址是NAT-ted或因為埠已轉發(典型情況是
#Docker和其他容器)。
#
#為了使Redis Cluster在這樣的環境中工作,
#每個節點都知道需要其公共地址的配置。的
#以下兩個選項用於此範圍,分別是:
#
# * cluster-announce-ip
# * cluster-announce-port
# * cluster-announce-bus-port
#
#每個命令都向節點指示其地址,客戶端埠和叢集訊息
#匯流排埠。然後將資訊釋出在匯流排資料包的標題中
#,以便其他節點將能夠正確對映該節點的地址
#釋出資訊。
#
#如果未使用上述選項,則正常的Redis群集自動檢測
#將代替使用。
#
#請注意,重新對映後,匯流排埠可能不在的固定偏移量
#客戶端埠+ 10000,因此您可以根據需要指定任何埠和匯流排埠
#如何重新對映它們。如果未設定匯流排埠,則固定偏移量為
#10000將照常使用。
#
#示例:
#
#cluster-announce-ip 10.1.1.5
#cluster-announce-port 6379
#cluster-announce-bus-port 6380
############################### SLOW LOG ############### ####################

#Redis Slow Log是用於記錄超過指定數量的查詢的系統
# 執行時間處理時間。執行時間不包括I / O操作
#喜歡與客戶交談,傳送回覆等,
#但僅是實際執行命令所需的時間(這是唯一的時間
#執行命令的階段,其中執行緒被阻塞並且無法服務
同時#個其他請求)。
#
#您可以使用以下兩個引數配置慢速日誌:一個告訴Redis
#為了使執行時間超出多少時間(以微秒為單位)
#命令獲取日誌,另一個引數是長度
#慢日誌。記錄新命令時,最舊的命令將從
#已記錄命令的佇列。

#以下時間以微秒錶示,因此1000000等價
#一秒鐘。請注意,負數將禁用慢速日誌記錄,而
#零值將強制記錄每個命令。
slowlog日誌慢於10000

#此長度沒有限制。請注意,它將消耗記憶體。
#您可以使用SLOWLOG RESET回收慢速日誌使用的記憶體。
slowlog-max-len 128

############################## LATENCY MONITOR ################# ##############

#Redis延遲監視子系統對不同的操作進行取樣
#在執行時收集與可能的來源有關的資料
#Redis例項的延遲。
#
#通過LATENCY命令,該資訊對使用者可用
#列印圖表並獲取報告。
#
#系統僅記錄在等於或等於時間的時間內執行的操作
#大於通過指定的毫秒數
#delay-monitor-threshold配置指令。設定其值時
#設定為零,等待時間監視器關閉。
#
#預設情況下,延遲監視是禁用的,因為它幾乎不需要
#如果您沒有延遲問題,並且收集資料可以提高效能
#衝擊雖然很小,但可以在大負載下測量。潛伏
使用以下命令可以在執行時輕鬆啟用#監視
#“如果需要,請配置配置延遲監視器閾值<毫秒”。
latency-monitor-threshold 0
########################### EVENT NOTIFICATION #################### ###########

#Redis可以將關鍵空間中發生的事件通知給釋出/訂閱客戶端。
#此功能記錄在http://redis.io/topics/notifications
#
#例如,如果啟用了鍵空間事件通知,並且客戶端
#對儲存在資料庫0中的鍵“ foo”執行DEL操作,兩個
#條訊息將通過釋出/訂閱釋出:
#
# PUBLISH __keyspace@0__:foo del
# PUBLISH __keyevent@0__:del foo
#
#可以在一個集合中選擇Redis將通知的事件
類數。每個類都由一個字元標識:
#
#K個鍵空間事件,以__keyspace @ <db> __字首釋出。
#E Keyevent事件,以__keyevent @ <db> __字首釋出。
#g通用命令(非型別專用),例如DEL,EXPIRE,RENAME,...
#$字串命令
#l列出命令
#s設定命令
#h雜湊命令
#z排序集命令
#x過期事件(每次金鑰過期時生成的事件)
#e驅逐事件(驅逐金鑰以獲取最大記憶體時生成的事件)
#t流命令
#m鍵丟失事件(注意:它不包含在“ A”類中)
#g $ lshzxet的別名,因此“ AKE”字串表示所有事件
#(除了按鍵遺失事件外,由於它們
#獨特的性質)。
#
#“ notify-keyspace-events”將由組成的字串作為引數
零個或多個字元的數量。空字串表示通知
#被禁用。
#
#示例:從列表的角度啟用列表和一般事件
#事件名稱,使用:
#
#notify-keyspace-events Elg
#
#示例2:獲取訂閱頻道的過期金鑰流
#名稱__keyevent @ 0__:過期使用:
#
#notify-keyspace-events Ex
#
#預設情況下,所有通知都被禁用,因為大多數使用者不需要
#此功能,該功能會有一些開銷。請注意,如果您不
#指定K或E中的至少一個,不會傳送任何事件。
notify-keyspace-events ""

############################## GOPHER SERVER ################# ################

#Redis包含Gopher協議的實現,如
#RFC 1436(https://www.ietf.org/rfc/rfc1436.txt)。
#
#Gopher協議在90年代後期非常流行。這是一種替代
#到網路上,伺服器和客戶端的實現是如此簡單
#Redis伺服器只有100行程式碼才能實現此功能
#支援。
#
#您現在如何使用Gopher?好吧,地鼠從來沒有*真的*死過,並且
#最近為了讓Gopher具有更高層次的內容而進行了一些移動
#由純文字文件組成,將要復活。有些人想要更簡單
#網際網路,其他人認為主流網際網路變得太多了
#控制,為其他人建立替代空間很酷
#想要一點新鮮空氣。
#
#無論如何,在Redis誕生10週年之際,我們給了它Gopher協議
#作為禮物。
#
#  - - 這個怎麼運作? ---
#
#Redis Gopher支援使用Redis的內聯協議,特別是
#兩種仍然非法的內聯請求:空請求
#或任何以“ /”開頭的請求(沒有Redis命令開頭
#加上這樣的斜線)。正常的RESP2 / RESP3請求完全超出了
#Gopher協議實現的路徑,也照常使用。
#
#如果啟用Gopher後開啟與Redis的連線併發送
#一個類似“ / foo”的字串,如果有一個名為“ / foo”的金鑰,則通過
#Gopher協議。
#
#為了建立一個真正的Gopher“漏洞”(Gopher中Gopher網站的名稱,
#說話),您可能需要以下指令碼:
#
#https://github.com/antirez/gopher2redis
#
#  - - 安全警告  - -
#
#如果您打算將Redis放置在網際網路上的公共地址中
#到伺服器Gopher頁面上確保為例項設定密碼。
#設定密碼後:
#
#1. Gopher伺服器(啟用時,預設情況下未啟用)仍然可以使用
#通過Gopher的內容。
#2.但是,在客戶端將無法呼叫其他命令之前
#驗證。
#
#因此,請使用'requirepass'選項來保護您的例項。
#
#請注意,“ io-threads-do-reads”當前不支援Gopher
#已啟用。
#
#要啟用Gopher支援,請取消註釋以下行並設定選項
#從no(預設)到yes。
#
# gopher-enabled no
############################## ADVANCED CONFIG ################# ##############

#當雜湊具有
#條目數量少,最大條目不超過給定
#門檻。可以使用以下指令配置這些閾值。
hash-max-ziplist-entries 512
hash-max-ziplist-value 64

#列表也以特殊方式編碼,以節省大量空間。
#可以指定每個內部列表節點允許的條目數
#作為固定的最大大小或最大元素數。
#對於固定的最大大小,請使用-5到-1,表示:
#-5:最大大小:64 Kb <-不建議用於正常工作負載
#-4:最大大小:32 Kb <-不推薦
#-3:最大大小:16 Kb <-可能不建議
#-2:最大大小:8 Kb <-好
#-1:最大大小:4 Kb <-好
#正數表示最多儲存_exactly_個元素
#每個列表節點。
#效果最好的選項通常是-2(8 Kb大小)或-1(4 Kb大小),
#但如果您的用例是唯一的,請根據需要調整設定。
list-max-ziplist-size -2

#列表也可能被壓縮。
#壓縮深度是從*每個*側面開始的快速列表ziplist節點的數量
#要從壓縮中“排除”的列表。列表的首尾
#始終未壓縮以進行快速推入/彈出操作。設定為:
#0:禁用所有列表壓縮
#1:深度1表示“直到列表中的1個節點之後才開始壓縮,
#從頭到尾”
#因此:[head]-> node-> node-> ...-> node-> [tail]
#[head],[tail]將始終未壓縮;內部節點將壓縮。
#2:[head]-> [next]-> node-> node-> ...-> node-> [prev]-> [tail]
這裡的#2表示:不要壓縮head或head-> next或tail-> prev或tail,
#但壓縮它們之間的所有節點。
#3:[head]-> [next]-> [next]-> node-> node-> ...-> node-> [prev]-> [prev]-> [tail]
#等
list-compress-depth 0

#集合在一種情況下具有特殊的編碼:組成集合時
恰好是基數10範圍內的整數的字串的數量
64位帶符號整數的數量。
#以下配置設定設定了大小限制
#設定為使用此特殊的記憶體儲存編碼。
set-max-intset-entries 512

#與雜湊和列表類似,排序後的集合也專門編碼為
#為了節省很多空間。僅當長度和
排序集中的#個元素低於以下限制:
zset-max-ziplist-entries 128
zset-max-ziplist-value 64

#HyperLogLog稀疏表示位元組數限制。該限制包括
#16個位元組的標頭。當使用稀疏表示的HyperLogLog交叉時
#此限制,它將轉換為密集表示形式。
#
#大於16000的值完全沒有用,因為此時
#密集表示可提高記憶體效率。
#
#為了獲得以下好處,建議值是〜3000
#節省空間的編碼而不會減慢PFADD,
#是稀疏編碼的O(N)。該值可以提高到
#〜10000,當CPU不是問題,而是空間,並且資料集為
#由許多基數在0-15000範圍內的HyperLogLog組成。
hll-sparse-max-bytes 3000

#流巨集節點的最大大小/專案。流資料結構是一個基數
#大節點樹,內部編碼多個專案。使用此配置
#可以配置單個節點的位元組數,並且
#在以下情況下切換到新節點之前可能包含的最大專案數:
#附加新的流條目。如果以下任何設定被設定為
#零,限制被忽略,因此例如可以設定一個
#通過將max-bytes設定為0並將max-entries設定為所需的最大整數限制
#值。
stream-node-max-bytes 4096
stream-node-max-entries 100

#主動重新雜湊處理每100毫秒CPU時間使用1毫秒
#為了幫助重新雜湊主Redis雜湊表(一個對映頂層)
#個值鍵)。 Redis使用的雜湊表實現(請參閱dict.c)
#執行一次懶散的重新雜湊處理:您在雜湊表中執行的操作更多
#正在重新雜湊化,則執行更多的重新雜湊化“步驟”,因此,如果
#伺服器處於空閒狀態,重新雜湊處理從未完成,並且使用了更多記憶體
#通過雜湊表。
#
#預設值是每秒使用此毫秒10次,以便
#主動重新雜湊主字典,並在可能的情況下釋放記憶體。
#
#如果不確定:
#如果您有嚴格的延遲要求,請使用“ activerehashing no”
#在您的環境中,Redis可能會不時答覆,這不是一件好事
#查詢2毫秒的延遲。
#
#如果您沒有如此嚴格的要求,請使用“ activerehashing yes”
#希望在可能的情況下儘快釋放記憶體。
activerehashing yes

#客戶端輸出緩衝區限制可用於強制斷開客戶端連線
#由於某種原因沒有足夠快地從伺服器讀取資料(a
#常見原因是釋出/訂閱客戶端無法配置彙總訊息的速度與
#釋出者可以製作它們)。
#
#可以為三種不同類別的客戶端設定不同的限制:
#
#普通->普通客戶端,包括MONITOR客戶端
#副本->副本客戶端
#pubsub->客戶端訂閱了至少一個pubsub頻道或模式
#
#每個client-output-buffer-limit指令的語法如下:
#
#client-output-buffer-limit <class> <hard limit> <soft limit> <soft seconds>
#
#一旦達到硬限制,或者如果
#達到軟限制,並保持達到指定數量
#秒(連續)。
#例如,如果硬限制為32 MB,軟限制為
#16兆位元組/ 10秒,客戶端將立即斷開連線
#如果輸出緩衝區的大小達到32兆位元組,但也會
#如果客戶端達到16兆位元組並持續克服,則斷開連線
#10秒的限制。
#
#預設情況下,普通客戶端不受限制,因為它們不接收資料
#不詢問(以推送方式),而是在請求之後,因此僅
#非同步客戶端可能會建立一個場景,在該場景中,資料請求速度更快
#比它能讀的多。
#
#相反,對於pubsub和副本客戶端沒有預設限制,因為
#個訂閱者和副本以推送方式接收資料。
#
#可以通過將硬限制或軟限制設定為零來禁用它們。
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

#客戶端查詢緩衝區累積新命令。它們僅限於固定
預設情況下為#數量,以避免協議失步(對於
#例項(由於客戶端中的錯誤)會導致未繫結的記憶體使用情況
#查詢緩衝區。但是,如果您有特殊要求,可以在此處進行配置
#需求,例如我們巨大的multi / exec請求等等。
#
#client-query-buffer-limit 1gb

#在Redis協議中,批量請求即表示單個請求的元素
#個字串,通常限制為512 mb。但是,您可以更改此限制
#在這裡,但必須大於等於1mb
#
#proto-max-bulk-len 512mb

#Redis呼叫一個內部函式來執行許多後臺任務,例如
#在超時中關閉客戶端連線,清除已過期的金鑰
#從未提出要求,依此類推。
#
#並非所有任務都以相同的頻率執行,但是Redis會檢查
#根據指定的“ hz”值執行的任務。
#
#預設情況下,“ hz”設定為10。
#Redis處於空閒狀態,但同時會使Redis在
#有許多鍵同時到期,並且可能超時
#更精確地處理。
#
#範圍介於1到500之間,但是通常不會超過100
# 一個好主意。大多數使用者應使用預設值10並將其提高到
#100僅在要求極低延遲的環境中使用。
hz 10
#通常,將HZ值與
#連線的客戶端數。這很有用,例如
#避免為每個後臺任務呼叫處理過多的客戶端
#為了避免延遲尖峰。
#
#由於預設的預設HZ值保守地設定為10,因此Redis
#提供並預設啟用使用自適應HZ值的功能
#當有許多連線的客戶端時,它將臨時升高。
#
#啟用動態HZ時,將使用實際配置的HZ
#作為基準,但實際上已配置的HZ值的倍數
#在連線更多客戶端後根據需要使用。這樣閒置
#例項將使用很少的CPU時間,而繁忙的例項將
#更靈敏。
dynamic-hz yes

#當孩子重寫AOF檔案時,如果啟用以下選項
#每生成32 MB的資料,檔案就會進行同步處理。這很有用
#為了將檔案更多地提交到磁碟並避免
#大的延遲峰值。
aof-rewrite-incremental-fsync yes

#redis儲存RDB檔案時,如果啟用以下選項
#每生成32 MB的資料,檔案就會進行同步處理。這很有用
#為了將檔案更多地提交到磁碟並避免
#大的延遲峰值。
rdb-save-incremental-fsync yes

#可以調整Redis LFU逐出(請參閱maxmemory設定)。但是,這是一個很好的
#從預設設定開始的想法,只有在調查後才能更改它們
#如何提高效能以及LFU的鍵隨時間變化的方式,其中
#可以通過OBJECT FREQ命令檢查。
#
#Redis LFU實現中有兩個可調引數:
#計數器對數因子和計數器衰減時間。重要的是要
#在更改它們之前瞭解兩個引數的含義。
#
#LFU計數器每個金鑰只有8位,最大值為255,因此Redis
#使用具有對數行為的概率增量。賦予價值
舊計數器的編號,當訪問一個鍵時,該計數器遞增
# 這條路:
#
#1.提取介於0和1之間的隨機數R。
#2。將概率P計算為1 /(old_value * lfu_log_factor + 1)。
#3.僅當R <P時,計數器才會遞增。
#
#預設的lfu-log-factor是10。這是一個頻率表
#計數器隨著訪問次數的不同而變化,且訪問次數不同
#對數因子:
# +--------+------------+------------+------------+------------+------------+
# | factor | 100 hits   | 1000 hits  | 100K hits  | 1M hits    | 10M hits   |
# +--------+------------+------------+------------+------------+------------+
# | 0      | 104        | 255        | 255        | 255        | 255        |
# +--------+------------+------------+------------+------------+------------+
# | 1      | 18         | 49         | 255        | 255        | 255        |
# +--------+------------+------------+------------+------------+------------+
# | 10     | 10         | 18         | 142        | 255        | 255        |
# +--------+------------+------------+------------+------------+------------+
# | 100    | 8          | 11         | 49         | 143        | 255        |
# +--------+------------+------------+------------+------------+------------+
#注意:上表是通過執行以下命令獲得的:
#
#   redis-benchmark -n 1000000 incr foo
#   redis-cli object freq foo
#
#注意2:計數器的初始值為5,以便為新物件提供機會
#累積點選數。
#
#計數器衰減時間是按順序必須經過的時間(以分鐘為單位)
#將金鑰計數器除以2(如果有值則減1
#小於<= 10)。
#
#lfu-decay-time的預設值為1。特殊值為0表示:
#每次碰巧掃描計數器時都會使其衰減。
#
#lfu-log-factor 10
#lfu-decay-time 1
########################## Active DEFRAGMENTATION ####################### ##
#
#什麼是主動碎片整理?
#-------------------------------
#
#主動(線上)碎片整理允許Redis伺服器壓縮
#在記憶體中的小量分配和釋放之間留有空格,
#因此可以回收記憶體。
#
#碎片是每個分配器都會發生的自然過程(但
#幸運的是,Jemalloc和某些工作負載更少。通常是一臺伺服器
#重新啟動是必要的,以減少碎片或至少衝洗
#刪除所有資料並再次建立。但是由於這個功能
#由Oran Agra針對Redis 4.0實施,此過程可以在執行時發生
#在伺服器執行時以“熱”方式。
#
#基本上在碎片超過一定水平時(請參閱
#下面的配置選項),Redis將開始建立新的副本
通過利用某些特定的Jemalloc在連續記憶體區域中的#個值
#功能(以瞭解分配是否引起碎片
#並將其分配到更好的位置),同時,將釋放
#資料的舊副本。對所有鍵逐步重複此過程
#將導致碎片恢復到正常值。
#
#重要事項:
#
#1.此功能預設情況下處於禁用狀態,僅在編譯Redis時有效
#使用我們隨附Redis原始碼的Jemalloc副本。
#這是Linux構建的預設設定。
#
#2.如果沒有碎片,則永遠不需要啟用此功能
#個問題。
#
#3。一旦遇到碎片,您可以在以下情況啟用此功能:
#需要使用命令“ CONFIG SET activedefrag yes”。
#
#配置引數能夠微調
#碎片整理過程。如果您不確定它們是什麼意思
#保持預設值不變的好主意。

#啟用主動碎片整理
#activedefrag no

#啟動主動碎片整理的最小碎片浪費量
#active-defrag-ignore-bytes 100mb

#啟動活動碎片整理的最小碎片百分比
#active-defrag-threshold-lower 10

#我們最大程度地努力下的最大碎片百分比
#active-defrag-threshold-upper 100

#在CPU百分比上進行最小整理的工作量,在較低時使用
達到#個閾值
#active-defrag-cycle-min 1

#最大程度地整理CPU百分比的碎片
達到#個閾值
#active-defrag-cycle-max 25

#將要處理的set / hash / zset / list欄位的最大數量
#主字典掃描
#active-defrag-max-scan-fields 1000

#預設情況下,將啟用用於清除的Jemalloc後臺執行緒
jemalloc-bg-thread yes

#可以將Redis的不同執行緒和程序固定到特定的
#系統中的CPU,以便最大化伺服器的效能。
#這對於將不同的Redis執行緒固定在不同的位置都是有用的
#CPU,也為了確保多個Redis例項正在執行
同一主機中的#將固定到不同的CPU。
#
#通常,您可以使用“ taskset”命令執行此操作,但是也可以
#在Linux和FreeBSD中都可以通過Redis直接配置。
#
#您可以固定伺服器/ IO執行緒,生物執行緒,aof重寫子程序以及
#bgsave子程序。指定cpu列表的語法與
#tasket命令:
#
#將Redis伺服器/ IO執行緒設定為CPU關聯0、2、4、6:
#server_cpulist 0-7:2
#
#將生物執行緒設定為cpu親和力1,3:
#bio_cpulist 1,3
#
#將aof rewrite子程序設定為cpu親和力8,9,10,11:
#aof_rewrite_cpulist 8-11
#
#將bgsave子程序設定為cpu親和力1,10,11
#bgsave_cpulist 1,10-11