Redis主配置文件之作用,一次說(shuō)清楚-尚文網(wǎng)絡(luò)xUP楠哥

#說(shuō)在前面
之前我們有討論過(guò)Redis這種非關(guān)系型數(shù)據(jù)庫(kù)的一些知識(shí)和部署Redis的配置,Redis是一個(gè)使用ANSI C編寫(xiě)的開(kāi)源、支持網(wǎng)絡(luò)、基于內(nèi)存、分布式、可選持久性的鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫(kù)。時(shí)至今日,Redis是最流行的鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫(kù);我之前也有寫(xiě)過(guò)一篇文件,主要講述如何部署Redis,詳情請(qǐng)見(jiàn)如下截圖;


正是因?yàn)檫@樣的特性,使得Redis應(yīng)用范圍非常廣泛,就連一些在IT業(yè)界有名的廠商,都會(huì)拿Redis來(lái)使用,作為它們產(chǎn)品的用于配合關(guān)系型數(shù)據(jù)庫(kù)做高速緩存 ,緩存高頻次訪問(wèn)的數(shù)據(jù),降低數(shù)據(jù)庫(kù)io使用。
接下來(lái),我們通過(guò)列舉某傳統(tǒng)廠商的云相關(guān)產(chǎn)品的底層操作界面,看下Redis的配置有哪些。

# Redis配置文件內(nèi)容
通過(guò)登錄到某傳統(tǒng)廠商的云相關(guān)產(chǎn)品底層,執(zhí)行ps -ef? | grep -i redis 可以看到redis進(jìn)程信息。

執(zhí)行 sed '/^#/d; /^$/d' /etc/redis/6379.conf,可以看到輸出結(jié)果是羅列出了redis主配置文件中有用的配置有哪些。

接下來(lái),我們將這些參數(shù)進(jìn)行詳細(xì)說(shuō)明:
daemonize:設(shè)置為yes表示指定Redis以守護(hù)進(jìn)程的方式啟動(dòng)(后臺(tái)啟動(dòng))。默認(rèn)值為 no;
pidfile:配置PID文件路徑,當(dāng)redis作為守護(hù)進(jìn)程運(yùn)行的時(shí)候,它會(huì)把 pid 默認(rèn)寫(xiě)到 /var/redis/run/redis_6379.pid 文件里面;
port:指定redis運(yùn)行的端口,默認(rèn)是6379;由于Redis是單線程模型,因此單機(jī)開(kāi)多個(gè)Redis進(jìn)程的時(shí)候會(huì)修改端口;
bind:綁定redis服務(wù)器網(wǎng)卡IP,默認(rèn)為127.0.0.1,即本地回環(huán)地址;
timeout:設(shè)置客戶端連接時(shí)的超時(shí)時(shí)間,單位為秒;當(dāng)客戶端在這段時(shí)間內(nèi)沒(méi)有發(fā)出任何指令,那么關(guān)閉該連接。默認(rèn)值為0,表示不關(guān)閉。
tcp-keepalive :?jiǎn)挝皇敲?,表示將周期性的檢測(cè)客戶端是否還處于健康狀態(tài),避免服務(wù)器一直阻塞,官方給出的建議值是300s,如果設(shè)置為0,則不會(huì)周期性的檢測(cè)。
loglevel :定義日志級(jí)別。默認(rèn)值為notice,目前配置為debug(記錄大量日志信息,適用于開(kāi)發(fā)、測(cè)試階段;
logfile :配置log文件地址,默認(rèn)打印在命令行終端的窗口上
databases:設(shè)置數(shù)據(jù)庫(kù)的數(shù)目,默認(rèn)的數(shù)據(jù)庫(kù)是DB 0 ,可以在每個(gè)連接上使用select? <dbid> 命令選擇一個(gè)不同的數(shù)據(jù)庫(kù),dbid是一個(gè)介于0到databases - 1 之間的數(shù)值。默認(rèn)值是 16,即默認(rèn)情況下,Redis有16個(gè)數(shù)據(jù)庫(kù)。
stop-writes-on-bgsave-error :默認(rèn)值為yes。當(dāng)啟用了RDB且最后一次后臺(tái)保存數(shù)據(jù)失敗,Redis是否停止接收數(shù)據(jù)。這會(huì)讓用戶意識(shí)到數(shù)據(jù)沒(méi)有正確持久化到磁盤(pán)上;
slave-serve-stale-data:默認(rèn)值為yes。當(dāng)一個(gè) slave 與 master 失去聯(lián)系,或者復(fù)制正在進(jìn)行的時(shí)候,slave會(huì)應(yīng)答客戶端的請(qǐng)求;
slave-read-only:配置Redis的Slave實(shí)例是否接受寫(xiě)操作,即Slave是否為只讀Redis。默認(rèn)值為yes。
requirepass:設(shè)置redis連接密碼;
Appendonly:默認(rèn)redis使用的是rdb方式持久化存儲(chǔ),除此之外,AOF(Append Only File)是另一種持久化方式,? 可以提供更好的持久化特性;Redis會(huì)把每次寫(xiě)入的數(shù)據(jù)在接收后都寫(xiě)入Appendonly.aof文件,每次啟動(dòng)時(shí)Redis都會(huì)先把這個(gè)文件的數(shù)據(jù)讀入內(nèi)存里,先忽略RDB文件。默認(rèn)值為no。
Appendfsync:aof持久化策略的配置;everysec表示每秒執(zhí)行一次fsync,可能會(huì)導(dǎo)致丟失這1S的數(shù)據(jù);
no-Appendfsync-on-rewrite:在AOF重寫(xiě)或者寫(xiě)入rdb文件的時(shí)候,會(huì)執(zhí)行大量IO,執(zhí)行fsync會(huì)造成阻塞過(guò)長(zhǎng)時(shí)間,該字段設(shè)置為默認(rèn)設(shè)置為no;
auto-aof-rewrite-percentage:默認(rèn)值為100,當(dāng)AOF文件增長(zhǎng)到一定大小的時(shí)候,Redis能夠調(diào)用bgrewriteaof對(duì)日志文件進(jìn)行重寫(xiě)。當(dāng)前AOF文件大小是上次日志重寫(xiě)得到AOF文件大小的二倍(設(shè)置為100)時(shí),自動(dòng)啟動(dòng)新的日志重寫(xiě)過(guò)程。
auto-aof-rewrite-min-size:64mb。設(shè)置允許重寫(xiě)的最小aof文件大小,避免了達(dá)到約定百分比但尺寸仍然很小的情況還要重寫(xiě);
lua-time-limit:一個(gè)lua腳本執(zhí)行的最大時(shí)間,單位為ms。默認(rèn)值為5000;
slowlog-log-slower-than:設(shè)置慢日志延遲時(shí)間。

# 說(shuō)在最后
通過(guò)以上的截圖和內(nèi)容,詳細(xì)說(shuō)明了Redis主配置文件中的最主要的一些配置。
由于redis訪問(wèn)速度塊、支持的數(shù)據(jù)類(lèi)型比較豐富,所以redis很適合用來(lái)存儲(chǔ)熱點(diǎn)數(shù)據(jù),另外我們也可以借助于Redis進(jìn)行熱點(diǎn)數(shù)據(jù)的排序,所以說(shuō)很多的廠商 都將開(kāi)源的Redis納入到廠商自己的相關(guān)產(chǎn)品中;
后續(xù)我們會(huì)繼續(xù)Redis相關(guān)的實(shí)踐場(chǎng)景操作以及關(guān)于Redis的持久化存儲(chǔ)配置以及主從集群架構(gòu)的部署。