Redis——配置詳解
阿新 • • 發佈:2020-11-18
前言
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