redis配置文件詳解(一)

Redis配置文件被分紅幾大塊區域,分別是:node

1.通用(general)redis

2.快照(snapshotting)算法

3.複製(replication)數據庫

4.安全(security)緩存

5.限制(limits)安全

6.追加模式(append only mode)bash

7.LUA腳本(lua scripting)服務器

8.Redis集羣(redis cluster)併發

9.慢日誌(slow log)app

10.延遲監控(latency monitor)

11.事件通知(event notification)

12.高級配置(advanced config)

注: INCLUDES配置:當機器不僅存在1個Redis實例時,能夠實現每一個Redis實例的"個性化"配置,此時,能夠將這些實例的共有配置寫到redis.conf中,而個性化的配置寫到由include配置路徑指定的文件中。

1. 通用(general):

1
2
3
4
5
6
7
8
9
10
11
############################  GENERAL  #################################
daemonize no                     ##是否之後臺daemon方式運行(默認爲no)
pidfile  /var/run/redis/redis .pid      ##Pid文件位置
port 6379                          ##監聽端口
tcp-backlog 511             ##客戶端鏈接隊列值, 在高併發的環境中,爲避免慢客戶端的鏈接問題,須要設置一個高速後臺日誌
bind 127.0.0.1                 ##指定redis所響應的鏈接請求(默認響應本機全部網卡的鏈接請求)
timeout 0                                 ##請求超時時間(0表示永不關閉)
tcp-keepalive 0                    ##TCP存活檢測(單位爲秒,0表示不進行檢測)
loglevel notice            ##log信息級別(分四級,即debug、verbose、notice、warning)
logfile  /var/log/redis/redis .log        ##log文件位置,如設置爲[logfile ""]空字符串,則redis會將日誌輸出到標準輸出,被寫到/dev/null中
databases 16      ##開啓數據庫數量(默認數據庫是編號爲0的數據庫,可以使用select <DBid>來選擇相應數據庫)

2. 快照(snapshotting)----主要涉及的是redis的RDB持久化相關的配置

      save * *: 保存快照的頻率,第一個*表示多長時間,第二個*表示執行多少次寫操做。在必定時間內執行必定數量的寫操做時,自動保存快照,可設置多個條件。如想禁用RDB持久化策略,不設置任何save指令即以,或設置[save ""]

1
2
3
4
5
6
7
8
9
##########################  SNAPSHOTTING  #############################
save 900 1            ##每15分鐘且至少有1個key改變,就觸發一次持久化
save 300 10           ##每5分鐘且至少有10個key改變,就觸發一次持久化
save 60 10000         ##每60秒至少有10000個key改變,就觸發一次持久化
stop-writes-on-bgsave-error  yes         ##redis持久化數據到磁盤時如出現失敗,默認redis會中止接受全部的寫請求
rdbcompression  yes               ##是否使用壓縮
rdbchecksum  yes                 ##是否使用CRC64算法來進行數據校驗
dbfilename dump.rdb            ##設置數據快照文件名(只是文件名,不包括目錄)
dir  /var/lib/redis/            ##設置數據快照的保存目錄(這個是目錄)

3. 複製(replication)

############################### REPLICATION ##########################

      經過slaveof配置項可控制某一個redis做爲另外一個redis的從服務器,經過指定IP和端口來定位到主redis的位置

1
# slaveof <masterip> <masterport>

     如主redis設置驗證密碼(使用requirepass設置),則需在從redis的配置中使用masterauth來設置校驗密碼,不然主redis會拒絕從redis的訪問請求

1
# masterauth <master-password>

     從redis失去與主redis的鏈接,或者主從同步正在進行時,redis對外部發來的訪問請求的兩種處理選擇:

選擇1:設置爲yes(默認),從redis仍會繼續響應客戶端的讀寫請求

選擇2:設置爲no,從redis會對客戶端的請求返回「SYNC with master in progress」(例外:當客戶端發來INFO請求和SLAVEOF請求,從redis仍是會進行處理)

1
2
slave-serve-stale-data  yes  
slave- read -only  yes            ##設置從redis只讀

複製同步策略:磁盤或者socket

      新的從redis上線或主redis從新上線時應作數據全同步。須要將一個新的RDB文件dump出來,而後從主redis傳到從redis。有兩種狀況:

1. 基於硬盤(disk-backed):主redis建立一個新進程dump RDB,以後由父進程(即主進程)增量傳給從redis

2. 基於socket(diskless):主redis建立一個新進程直接dump RDB到從redis的socket,不通過主進程,不通過硬盤

      如基於硬盤,RDB文件建立後,一旦建立完畢,能夠同時服務更多從redis;如基於socket,新的從redis加入後,需進行排隊(如超出repl-diskless-sync-delay設定時時);當用diskless時,主redis等待repl-diskless-sync-delay設定的秒數後,如無新的從redis加入,就直接傳,後來的需排隊等待。(默認用disk-based)

1
2
3
repl-diskless- sync  no
repl-diskless- sync -delay 5              ##每五秒傳輸一次(需開啓diskless)
# repl-ping-slave-period 10             ##設置從redis向主redis發出PING包的週期(默認10秒)

在主從同步時,可能在這些狀況下會有超時發生:

1. 以從redis的角度來看,當有大規模IO傳輸時。

2. 以從redis的角度來看,當數據傳輸或PING時,主redis超時

3. 以主redis的角度來看,在回覆從redis的PING時,從redis超時

     用戶能夠設置上述超時的時限,不過要確保這個時限比repl-ping-slave-period的值要大,不然每次主redis都會認爲從redis超時。

1
# repl-timeout 60

      設置主從同步時是否禁用TCP_NODELAY。如開啓TCP_NODELAY,主redis會使用更少的TCP包和更少的帶寬來向從redis傳輸數據,但可能會增長同步延遲(40ms)。如關閉TCP_NODELAY,那數據同步的延遲時間會下降,但會消耗更多的帶寬

1
repl-disable-tcp-nodelay no

      設置同步隊列長度。隊列長度(backlog)是主redis中的一個緩衝區,在與從redis斷開鏈接期間,主redis會用這個緩衝區來緩存應該發給從redis的數據。這樣,當從redis從新鏈接上後,就沒必要從新全量同步數據,只須要同步這部分增量數據便可

1
# repl-backlog-size 1mb

設置主redis清理緩衝隊列等待的時間長度(設置爲0表示永不清理,默認爲1個小時)

1
2
# repl-backlog-ttl 3600
slave-priority 100    ##設置從redis優先級,編號越小,優先級越高(默認100)

如主redis發現有超過M個從redis的鏈接延時大於N秒,那麼主redis就中止接受外來的寫請求

1
2
# min-slaves-to-write 3
# min-slaves-max-lag 10

      假若有大於等於3個從redis的鏈接延遲大於10秒,那麼主redis就再也不接受外部的寫請求。上述兩個配置中有一個被置爲0,則這個特性將被關閉

相關文章
相關標籤/搜索