redis 配置檔案詳解

haoge0205發表於2019-08-14

bind 0.0.0.0                 #繫結redis伺服器網路卡IP,預設為127.0.0.1,即本地迴環地址。這樣的話,訪問redis服務只能透過本機的客戶端連線,而無法透過遠端連線。如果bind選項為空的話,那會接受所有來自於可用網路介面的連線。

protected-mode no            #設定為yes表示指定Redis以守護程式的方式啟動(後臺啟動)。預設值為 no

port 7007

tcp-backlog 511

timeout 0                    #設定客戶端連線時的超時時間,單位為秒。當客戶端在這段時間內沒有發出任何指令,那麼關閉該連線。預設值為0,表示不關閉。

tcp-keepalive 300         #單位是秒,表示將週期性的使用SO_KEEPALIVE檢測客戶端是否還處於健康狀態,避免伺服器一直阻塞,官方給出的建議值是300s,如果設定為0,則不會週期性的檢測。

daemonize yes                #是否後臺執行,yes後臺執行;no不是後臺執行

supervised no

pidfile "/u01/redis/7007/pid/redis_7007.pid"    #redis程式檔案路徑

loglevel warning            #loglevel :定義日誌級別。預設值為notice,有如下4種取值:

                             debug(記錄大量日誌資訊,適用於開發、測試階段)

                             verbose(較多日誌資訊)

                             notice(適量日誌資訊,使用於生產環境)

                             warning(僅有部分重要、關鍵資訊才會被記錄)

logfile "/u01/redis/7007/log/redis_7007.log"    #redis日誌檔案路徑

masterauth "ysBhqkYHDifB"                       # 

requirepass "ysBhqkYHDifB"                      #

databases 16           #設定資料庫的數目。預設的資料庫是DB 0 ,可以在每個連線上使用select  <dbid> 命令選擇一個不同的資料庫,dbid是一個介於0到databases - 1 之間的數值。預設值是 16,也就是說預設Redis有16個資料庫。

stop-writes-on-bgsave-error yes    #預設值為yes。當啟用了RDB且最後一次後臺儲存資料失敗,Redis是否停止接收資料。這會讓使用者意識到資料沒有正確持久化到磁碟上,否則沒有人會注意到災難(disaster)發生了。如果Redis重啟了,那麼又可以重新開始接收資料了

rdbcompression yes     #預設值是yes。對於儲存到磁碟中的快照,可以設定是否進行壓縮儲存。如果是的話,redis會採用LZF演算法進行壓縮。如果你不想消耗CPU來進行壓縮的話,可以設定為關閉此功能,但是儲存在磁碟上的快照會比較大。

rdbchecksum yes    #預設值是yes。在儲存快照後,我們還可以讓redis使用CRC64演算法來進行資料校驗,但是這樣做會增加大約10%的效能消耗,如果希望獲取到最大的效能提升,可以關閉此功能。

dbfilename "redis_7007_dump.rdb"   #設定快照的檔名,預設是 dump.rdb

dir "/u01/redis/7007/data"      #設定快照檔案的存放路徑,這個配置項一定是個目錄,而不能是檔名。使用上面的 dbfilename 作為儲存的檔名。

slave-serve-stale-data yes  #預設值為yes。當一個 slave 與 master 失去聯絡,或者複製正在進行的時候,slave 可能會有兩種表現:

                             1) 如果為 yes ,slave 仍然會應答客戶端請求,但返回的資料可能是過時,或者資料可能是空的在第一次同步的時候 

                             2) 如果為 no ,在你執行除了 info he salveof 之外的其他命令時,slave 都將返回一個 "SYNC with master in progress" 的錯誤

slave-read-only yes      #配置Redis的Slave例項是否接受寫操作,即Slave是否為只讀Redis。預設值為yes。

repl-diskless-sync no     #主從資料複製是否使用無硬碟複製功能。預設值為no。

repl-diskless-sync-delay 5   #當啟用無硬碟備份,伺服器等待一段時間後才會透過套接字向從站傳送RDB檔案,這個等待時間是可配置的。  這一點很重要,因為一旦傳送開始,就不可能再為一個新到達的從站服務。從站則要排隊等待下一次RDB傳送。因此伺服器等待一段  時間以期更多的從站到達。延遲時間以秒為單位,預設為5秒。要關掉這一功能,只需將它設定為0秒,傳送會立即啟動。預設值為5。

repl-disable-tcp-nodelay no   #同步之後是否禁用從站上的TCP_NODELAY 如果你選擇yes,redis會使用較少量的TCP包和頻寬向從站傳送資料。但這會導致在從站增加一點資料的延時。  Linux核心預設配置情況下最多40毫秒的延時。如果選擇no,從站的資料延時不會那麼多,但備份需要的頻寬相對較多。預設情況下我們將潛在因素最佳化,但在高負載情況下或者在主從站都跳的情況下,把它切換為yes是個好主意。預設值為no。

slave-priority 100       #

min-slaves-to-write 0

min-slaves-max-lag 10

maxmemory 2gb          #設定客戶端最大併發連線數,預設無限制,Redis可以同時開啟的客戶端連線數為Redis程式可以開啟的最大檔案。描述符數-32(redis server自身會使用一些),如果設定 maxclients為0 。表示不作限制。當客戶端連線數到達限制時,Redis會關閉新的連線並向客戶端返回max number of clients reached錯誤資訊。

maxmemory-policy volatile-lru   #當記憶體使用達到最大值時,redis使用的清楚策略。有以下幾種可以選擇:

                                 1)volatile-lru   利用LRU演算法移除設定過過期時間的key (LRU:最近使用 Least Recently Used ) 

                                 2)allkeys-lru   利用LRU演算法移除任何key 

                                 3)volatile-random 移除設定過過期時間的隨機key 

                                 4)allkeys-random  移除隨機ke

                                 5)volatile-ttl   移除即將過期的key(minor TTL) 

                                 6)noeviction  noeviction   不移除任何key,只是返回一個寫錯誤 ,預設選項

appendonly no   #預設redis使用的是rdb方式持久化,這種方式在許多應用中已經足夠用了。但是redis如果中途當機,會導致可能有幾分鐘的資料丟失,根據save來策略進行持久化,Append Only File是另一種持久化方式,  可以提供更好的持久化特性。Redis會把每次寫入的資料在接收後都寫入appendonly.aof檔案,每次啟動時Redis都會先把這個檔案的資料讀入記憶體裡,先忽略RDB檔案。預設值為no。

appendfilename "appendonly.aof"    #aof檔名,預設是"appendonly.aof"

appendfsync everysec   #aof持久化策略的配置;no表示不執行fsync,由作業系統保證資料同步到磁碟,速度最快;always表示每次寫入都執行fsync,以保證資料同步到磁碟;everysec表示每秒執行一次fsync,可能會導致丟失這1s資料

no-appendfsync-on-rewrite no    #在aof重寫或者寫入rdb檔案的時候,會執行大量IO,此時對於everysec和always的aof模式來說,執行fsync會造成阻塞過長時間,no-appendfsync-on-rewrite欄位設定為預設設定為no。如果對延遲要求很高的應用,這個欄位可以設定為yes,否則還是設定為no,這樣對持久化特性來說這是更安全的選擇。   設定為yes表示rewrite期間對新寫操作不fsync,暫時存在記憶體中,等rewrite完成後再寫入,預設為no,建議yes。Linux的預設fsync策略是30秒。可能丟失30秒資料。預設值為no。

auto-aof-rewrite-percentage 100   預設值為100。aof自動重寫配置,當目前aof檔案大小超過上一次重寫的aof檔案大小的百分之多少進行重寫,即當aof檔案增長到一定大小的時候,Redis能夠呼叫bgrewriteaof對日誌檔案進行重寫。當前AOF檔案大小是上次日誌重寫得到AOF檔案大小的二倍(設定為100)時,自動啟動新的日誌重寫過程。

auto-aof-rewrite-min-size 64mb   #設定允許重寫的最小aof檔案大小,避免了達到約定百分比但尺寸仍然很小的情況還要重寫。

aof-load-truncated yes     #aof檔案可能在尾部是不完整的,當redis啟動的時候,aof檔案的資料被載入記憶體。重啟可能發生在redis所在的主機作業系統當機後,尤其在ext4檔案系統沒有加上data=ordered選項,出現這種現象  redis當機或者異常終止不會造成尾部不完整現象,可以選擇讓redis退出,或者匯入儘可能多的資料。如果選擇的是yes,當截斷的aof檔案被匯入的時候,會自動釋出一個log給客戶端然後load。如果是no,使用者必須手動redis-check-aof修復AOF檔案才可以。預設值為 yes。

lua-time-limit 5000       #一個lua指令碼執行的最大時間,單位為ms。預設值為5000.

cluster-enabled yes         #叢集開關,預設是不開啟叢集模式。

cluster-config-file "nodes-7007.conf"        #叢集配置檔案的名稱,每個節點都有一個叢集相關的配置檔案,持久化儲存叢集的資訊。 這個檔案並不需要手動配置,這個配置檔案有Redis生成並更新,每個Redis叢集節點需要一個單獨的配置檔案。請確保與例項執行的系統中配置檔名稱不衝突。預設配置為nodes-6379.conf。

cluster-node-timeout 15000            #可以配置值為15000。節點互連超時的閥值,叢集節點超時毫秒數

slowlog-log-slower-than 10000          #

slowlog-max-len 128

latency-monitor-threshold 0

notify-keyspace-events ""

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

list-max-ziplist-size -2

list-compress-depth 0

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

activerehashing yes

client-output-buffer-limit normal 0 0 0

client-output-buffer-limit slave 0 0 0

client-output-buffer-limit pubsub 32mb 8mb 60

hz 10

aof-rewrite-incremental-fsync yes

# Generated by CONFIG REWRITE

cluster-require-full-coverage no    #預設情況下,叢集全部的slot有節點負責,叢集狀態才為ok,才能提供服務。  設定為no,可以在slot沒有全部分配的時候提供服務。不建議開啟該配置,這樣會造成分割槽的時候,小分割槽的master一直在接受寫請求,而造成很長時間資料不一致。


##LAZYFREE

lazyfree-lazy-eviction yes

lazyfree-lazy-expire yes

lazyfree-lazy-server-del yes

repl-timeout 600

cluster-migration-barrier 0    #可以配置值為1。master的slave數量大於該值,slave才能遷移到其他孤立master上,如這個引數若被設為2,那麼只有當一個主節點擁有2 個可工作的從節點時,它的一個從節點會嘗試遷移。

cluster-slave-validity-factor 600     #可以配置值為10。在進行故障轉移的時候,全部slave都會請求申請為master,但是有些slave可能與master斷開連線一段時間了,  導致資料過於陳舊,這樣的slave不應該被提升為master。該引數就是用來判斷slave節點與master斷線的時間是否過長。判斷方法是:比較slave斷開連線的時間和(node-timeout * slave-validity-factor) + repl-ping-slave-period     如果節點超時時間為三十秒, 並且slave-validity-factor為10,假設預設的repl-ping-slave-period是10秒,即如果超過310秒slave將不會嘗試進行故障轉移


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28939273/viewspace-2653677/,如需轉載,請註明出處,否則將追究法律責任。

相關文章