redis的conf文件內(nèi)容豐富,值得一讀。
1,進(jìn)制換算
1,為了使配置文件生效,配置文件必須是redis-server的第一個(gè)參數(shù)
2,指定內(nèi)存大小時(shí),帶b和不帶b的區(qū)別
3,不區(qū)分大小寫(xiě)
2,引用
我們可以執(zhí)行基礎(chǔ)配置文件,然后include進(jìn)來(lái)。再配置幾個(gè)特殊的參數(shù)。
這在我們運(yùn)維大量redis實(shí)例時(shí),非常有用。
但是我們實(shí)際上使用運(yùn)維工具來(lái)運(yùn)維redis實(shí)例,一般不用這個(gè),不如全部配置來(lái)簡(jiǎn)單直觀。
3,模塊
模塊是redis4.0以上版本新增的特性,可以編寫(xiě)自己的擴(kuò)展模塊,加載進(jìn)redis。
高階使用,還是很需要學(xué)習(xí)一把的。
官方模塊地址:https://redis.io/modules
4,網(wǎng)絡(luò)配置
【改動(dòng)點(diǎn)】
默認(rèn)是bind 127.0.0.1,這只能監(jiān)聽(tīng)自己機(jī)器上的連接。我們需要改成機(jī)器的ip
不要注釋掉,這樣不安全
保護(hù)模式。模式是on的。當(dāng)你把bind注掉,并且redis沒(méi)設(shè)置密碼,就會(huì)觸發(fā)保護(hù)模式,只允許本機(jī)登錄redis。
我們保持默認(rèn)就好。我們的redis都應(yīng)該設(shè)置密碼的。
【改動(dòng)點(diǎn)】
端口,默認(rèn)6379
要理解這個(gè)參數(shù),要從TCP連接的三次握手講起
如上圖,在server端處理TCP連接三次握手過(guò)程中,linux內(nèi)核為server端維護(hù)兩條backlog隊(duì)列,一條是TCP層的未連接隊(duì)列,也就是只發(fā)過(guò)來(lái),但是還沒(méi)確認(rèn),對(duì)應(yīng)內(nèi)核的net.ipv4.tcp_max_syn_backlog參數(shù)。下面那個(gè)是應(yīng)用層的等待最終建立連接的隊(duì)列(等系統(tǒng)確認(rèn)建立TCP連接后,會(huì)從這個(gè)queue刪掉),對(duì)應(yīng)net.core.somaxconn這個(gè)內(nèi)核參數(shù)。
我們這里的tcp-backlog很明顯,對(duì)應(yīng)的是下面那個(gè)隊(duì)列。
聯(lián)系到redis,因?yàn)镽edis的單線程模型(對(duì)命令的處理和連接的處理都是在一個(gè)線程中),如果存在慢查詢的話,會(huì)出現(xiàn)等待accept隊(duì)列滿,造成新的accept的連接進(jìn)不了隊(duì)列。導(dǎo)致客戶端看到connect time out類似的報(bào)錯(cuò)
總結(jié):tcp-backlog并不是redis的最大連接數(shù)。而是和redis優(yōu)化有關(guān)的參數(shù)。
看看linux內(nèi)核這個(gè)值是多少
cat /proc/sys/net/core/somaxconn 128
我這里顯示是128
也就是默認(rèn)的配置511是用不到的,被內(nèi)核先限制住了。
echo 512 > /proc/sys/net/core/somaxconn sysctl -p
這樣修改,并生效
除了TCP連接以外,redis也支持 Unix Socket 的方式運(yùn)行,可以避免 TCP/IP 的性能瓶頸,在高訪問(wèn)場(chǎng)景實(shí)現(xiàn) 25% 的性能提升。
默認(rèn)是不使用的。
這種通信方式僅用于本機(jī)的進(jìn)程間通信,不需要經(jīng)過(guò)網(wǎng)絡(luò)協(xié)議棧,不需要打包拆包、計(jì)算校驗(yàn)和、維護(hù)序號(hào)和應(yīng)答等,所以性能上和效率上比TCP/UDP Socket高得多。
使用起來(lái)就像給本機(jī)的某個(gè)程序外掛了一塊內(nèi)存。
(沒(méi)用過(guò)這種方式~)
當(dāng)一個(gè)redis客戶端多久沒(méi)向server端發(fā)送請(qǐng)求了,server端可以主動(dòng)斷掉連接。
默認(rèn)是0,表示永不主動(dòng)斷掉
保活檢測(cè)。默認(rèn)是每300s向客戶端發(fā)送ack確認(rèn)包,以檢測(cè)客戶端是否還活著。
改成0是不檢測(cè)。保持默認(rèn)的300就好