Redis學習筆記01---配置文件

1.配置文件用法

啓動redis的時候指定配置⽂件路徑:node

./redis-server /path/to/redis.conf

不指定配置⽂件的時候使⽤內置配置⽂件啓動,此⽅法僅適⽤於開發和測試。redis

2.include配置配置

⽤於引⼊其餘配置⽂件,配置集羣的時候⽤於引⼊公共配置⽤法以下:算法

include /path/to/other.conf

3.bind

此配置⽤於綁定服務器⽹絡接⼝,默認狀況下綁定全部可⽤的⽹絡端⼝。 能夠通 過: bind ip1 ip2... 綁定多個端⼝。 ⽐如服務器局域⽹ip地址爲:192.168.20.127。 如下配置能夠實現局域⽹和本地訪問:數據庫

bind 192.168.20.127 127.0.0.1

注:安全

bind 192.168.1.100 10.0.0.1
bind 127.0.0.1

上⾯配置只綁定了127.0.0.1這個ip。服務器

bind 0.0.0.0

爲綁定全部可⽤⽹絡端⼝。網絡

4.protected-mode

保護模式配置:less

protectedmode yes

當保護模式開啓的時候,且沒有配置bind和密碼,只有ipv4和ipv6的迴路ip127.0.0.1 and ::1能夠訪問dom

5.port

redis監聽的端⼝配置:異步

port 6379
port 0 不監聽端⼝

6.timeout

設置客戶端鏈接超時時間,0的時候爲關閉此功能。當客戶端在此時間段內沒有發送 指令,關閉鏈接。

timeout 0

7.daemonize

daemonize yes

設置redis後臺運⾏當後臺運⾏的時候會⽣成⼀個進程⽂件:

/var/run/redispid

8.pidfile

配置後臺運⾏時⽣成的pid⽂件路徑:

pidfile /var/run/redis6379.pid

9 loglevel

指定⽇志打印等級:

debug(開發測試)、verbose、notice(線上)、warning

loglevel notice

10.logfile

指定⽇志⽂件路徑和名稱如:

logfile "/Users/yuanweipeng/Desktop/redislog"

設置系統⽇志:

syslog-enabled no
syslog-ident redis
syslog-facility local0 設置系統⽇志設備名稱

11.databases

設置數據庫個數:

databases 16

默認的數據庫是db0,能夠經過能夠經過select dbid爲每個鏈接選擇不一樣的數據庫。數據庫的取值應該在0-(db-1)

12.save

將內存數據庫的內容寫到文件中。格式爲:

save <seconds> <changes>

好比:

save 900 1 900秒內有一次key修改
save 300 10 300秒內有10次修改
save 60 10000

13.stop-writes-on-bgsave-error

當redis寫入到文件操做失敗後,redis將不會接受內存寫操做。用來提醒用戶數據持久化失敗。

stop-writes-on-bgsave-error yes

若是對redis進行了持久化監控,能夠將此項配置成no,實現即便出現持久化問題,redis依然能夠接受內存寫操做。

14.dbfilename

配置redis轉存文件的地址

dbfilename dump.rdb

15.dir

配置數據庫文件位置:

dir ./

16.主從複製相關

1.redis的主從複製是異步的,能夠配置當某幾個slave數據庫連不上的時候,中止接收內存寫操做。 2.主從數據同步是自動完成的,當主從網絡短線從新鏈接的時候,從庫會自動重新數據同步。

slaveof <masterip> <masterport>

用於配置主庫ip地址和端口。

masterauth <master-password>

配置主庫的數據庫密碼。

slave-serve-stale-data yes

次配置用於設置當slave和master失去鏈接的時候是否繼續接受客戶端鏈接。當此項目設置爲yes的時候會返回過時的數據或者null,當設置爲no的時候會返回error:

SYNC with master in progress

設置slave是否接受寫操做:

slave-read-only yes

slave可用於保存短暫的數據,當從庫和主庫同步數據的時候,會將寫入到slave的數據刪除。

repl-diskless-sync no

複製同步策略配置:disk or socket. 當增長新的slave數據庫或者斷開後從新鏈接的時候,會發生全量同步,這時候是將redis的db文件直接從主庫傳輸到從庫。文件傳輸有兩種方式:

第一種:先將內存數據寫入磁盤,而後再將生成的文件傳輸到slave。
第二種:直接新起一個進程,將數據經過socket傳輸到slave

根據網絡速度和磁盤速度選擇不一樣的複製方式。

repl-ping-slave-period 10

slave向master發送ping請求的時間間隔。

repl-timeout 60

超時時間,應該小於repl-ping-slave-period

repl-disable-tcp-nodelay no

設置是否會有延遲時間。設置爲no的時候主庫和從庫數據傳輸的延遲時間較短。可是消耗帶寬比較大。

repl-backlog-size 1mb

設置slave斷開鏈接的時候數據的緩衝區,在緩衝區沒有用完以前,從庫回覆連接只須要從緩衝區同步數據,不須要全量同步。只有當有從庫的時候纔會設置此項。

repl-backlog-ttl 3600

設置當master沒有slave鏈接的時候,多久釋放緩衝區。設置爲0的時候表示不釋放緩衝區。

slave-priority 100

設置slave的優先級,當master宕機的時候會選出一個優先級最低的slave提高爲主庫。0表示不能看成master 當slave少於3個連接的時候,master中止接受寫入。判斷失聯時間爲:10s內slave沒有從master複製數據,則表示失聯。

min-slaves-to-write 3 默認設置爲0,關閉此功能
min-slaves-max-lag 10

17.安全設置相關

requirepass 123456

用於設置客戶端鏈接密碼。

rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52

命令重命名。 maxclients 10000 設置最大客戶端鏈接數量。

maxmemory <bytes>

設置最大內存。 當redis內存達到上限的時候,會根據配置的垃圾回收策略刪除key。當沒有設置垃圾回收策略的時候,redis會對寫操做報異常,都操做仍然正常返回數據。 當沒有設置此配置項的時候,只有當系統內存達到上限的時候會拋出out-of-memory exception異常。

maxmemory-policy noeviction 默認配置

volatile-lru -> 使用最近最少使用算法刪除過時的key
allkeys-lru -> 根據最近最少使用算法刪除key
volatile-random -> 從過時的key中隨機刪除
allkeys-random -> 隨機刪除key
volatile-ttl -> 刪除最近過時的key
noeviction -> 直接在寫操做的時候返回error

LRU算法中的樣本數,好比redis會檢查5個key中的lru maxmemory-samples 5

18.Redis集羣

須要開啓集羣配置的才能看成Redis集羣的一個節點:

cluster-enabled <yes/no>:

該項若是設置成yes,該實例支持redis集羣。不然該實例會像往常同樣以獨立模式啓動。

集羣的每個節點都須要有一個配置文件,這個文件由redis生成和更新的。

cluster-config-file nodes-6379.conf

必須注意到儘管該項是可選的,這並非一個用戶能夠編輯的配置文件,這是redis集羣節點自動生成的配置文件,每次一旦配置有修改它都經過該配置文件來持久化配置(基本上都是狀態),這樣在下次啓動的時候能夠從新讀取這些配置。該文件中列出了該集羣中的其餘節點的狀態,持久化變量等信息。 當節點收到一些信息的時候該文件就會被衝重寫

節點過時時間配置,當超過此時間則認爲此節點爲失敗狀態。

cluster-node-timeout 15000

redis集羣節點的最大超時時間。響應超過這個時間的話該節點會被認爲是掛掉了。若是一個master節點超過必定的時候沒法訪問,它會被它的slave取代。 該參數在redis集羣配置中很重要。很明顯,當節點沒法訪問大部分master節點超過必定時間後,它會中止接受查詢請求。

cluster-slave-validity-factor <factor>

:若是將該項設置爲0,無論slave節點和master節點間失聯多久都會一直嘗試failover(設爲正數,失聯大於必定時間(factor*節點TimeOut),再也不進行FailOver)。好比,若是節點的timeout設置爲5秒,該項設置爲10,若是master跟slave之間失聯超過50秒,slave不會去failover它的master(意思是不會去把master設置爲掛起狀態,並取代它)。注意:任意非0數值都有可能致使當master掛掉又沒有slave去failover它,這樣redis集羣不可用。在這種狀況下只有原來那個master從新回到集羣中才能讓集羣恢復工做。

cluster-migration-barrier <count>:

一個master能夠擁有的最小slave數量。該項的做用是,當一個master沒有任何slave的時候,某些有富餘slave的master節點,能夠自動的分一個slave給它。具體參見手冊中的replica migration章節

cluster-require-full-coverage <yes/no>:

若是該項設置爲yes(默認就是yes) 當必定比例的鍵空間沒有被覆蓋到(就是某一部分的哈希槽沒了,有多是暫時掛了)集羣就中止處理任何查詢操做。若是該項設置爲no,那麼就算請求中只有一部分的鍵能夠被查到,同樣能夠查詢(可是有可能會查不全)

19.慢查日誌

slowlog-log-slower-than 1000000

此配置項指定查詢時間超過多少的操做,打印日誌。1000000=1s。當此配置爲0的時候記錄每次查詢操做。爲負數的時候關閉此功能。

slowlog-max-len 128

它決定 slow log 最多能保存多少條日誌, slow log 自己是一個 FIFO 隊列,當隊列大小超過 slowlog-max-len 時,最舊的一條日誌將被刪除,而最新的一條日誌加入到 slow log ,以此類推。

20.推送/訂閱功能

notify-keyspace-events ""

空的時候關閉此功能,選項值爲非空字符串時,啓用該功能,非空字符串由特定的多個字符組成,每一個字符表示不一樣的意義:

K:keyspace事件,事件以__keyspace@<db>__爲前綴進行發佈;

     E:keyevent事件,事件以__keyevent@<db>__爲前綴進行發佈;

     g:通常性的,非特定類型的命令,好比del,expire,rename等;

     $:字符串特定命令;

     l:列表特定命令;

     s:集合特定命令;

     h:哈希特定命令;

     z:有序集合特定命令;

     x:過時事件,當某個鍵過時並刪除時會產生該事件;

     e:驅逐事件,當某個鍵因maxmemore策略而被刪除時,產生該事件;

     A:g$lshzxe的別名,所以」AKE」意味着全部事件。

注意,該選項的值中至少須要包含K或者E,不然不會發布任何事件。好比,若是須要開啓針對列表的keyspace事件通知,則該選項須要配置爲「Kl」;

相關文章
相關標籤/搜索