1.配置檔案用法
啟動redis的時候指定配置⽂件路徑:
./redis-server /path/to/redis.conf
不指定配置⽂件的時候使⽤內建配置⽂件啟動,此⽅法僅適⽤於開發和測試。
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
保護模式配置:
protectedmode yes
當保護模式開啟的時候,且沒有配置bind和密碼,只有ipv4和ipv6的迴路ip127.0.0.1
and ::1可以訪問
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”;