Redis菜鳥教程(二)配置文件注釋

Redis 配置CONFIG
edis.conf配置文件去配置管理redis的運(yùn)行。

include

當(dāng)需要映入其他配置文件到redis.conf文件中時需要使用include指令,例如
include /path/to/other.conf
如:include c:\path\to\other.conf

bind

該指令默認(rèn)情況下,redis只接受來至本機(jī)請求訪問,注意如果redis運(yùn)行暴漏在外網(wǎng)需要開啟密碼驗(yàn)
證使用requirepass屬性設(shè)置。bind 127.0.0.1

protected-mode

保護(hù)模式默認(rèn)值是yes,是為了保護(hù)redis不被外網(wǎng)訪問與保護(hù)redis數(shù)據(jù)庫的安全性。默認(rèn)情況下啟用保護(hù)
模式。若想讓其他客戶端連接到Redis,應(yīng)該禁用它.
protected-mode yes

port

該屬性設(shè)置redis運(yùn)行時的端口,默認(rèn)redis的端口是6379,如果在不沒有沖突的的情況下可以修改
為用戶自己設(shè)置的端口。
port 6379

tcp-backlog

在 高并發(fā)的生產(chǎn)環(huán)境下,我們需要有一個高效的TCP處理能力,這樣才可以避免為客戶端緩慢
的連接問題。通過設(shè)置tcp-backlog參數(shù)提升redis服務(wù)器 對客戶端的響應(yīng)能力。注意:在linux內(nèi)核中
proc/sys/net/core/somaxconn文件中配置了系統(tǒng)的默認(rèn)TCP的并發(fā)數(shù)限制 128,如果tcp-
backlog大于系統(tǒng)默認(rèn)的值配置無效,為了達(dá)到配置的效果,一般要求修改proc/sys/net/core
/somaxconn值。
tcp-backlog 511

timeout

Close the connection after a client is idle for N seconds (0 to disable)
timeout 0

daemonize

默認(rèn)redis并不會后臺方式運(yùn)行,可以通過設(shè)置daemonize屬性為yes設(shè)置redis以鏡像方式運(yùn)行。
daemonize no

pidfile

當(dāng)redis處于后臺運(yùn)行時,該選項(xiàng)指定了redis運(yùn)行時候進(jìn)程號文件所處的位置。
pidfile /var/run/redis_6379.pid

loglevel

指定服務(wù)器的日志運(yùn)行級別debug、verbose、notice、warning可選值,debug打印輸出很所日
志信息,verbose只是會比debug少一些、notice打印運(yùn)行時的一些必要重要信息、warning打印
系統(tǒng)的非常重要的信息。
loglevel notice

logfile

指定日志文件輸出的物理文件位置如果設(shè)置為""表示直接輸出到控制臺。注意如果使用的是
daemonize模式但是沒有設(shè)置logfile默認(rèn)會輸出到/dev/null文件
logfile ""

databases

設(shè)置redis數(shù)據(jù)庫的數(shù)目,默認(rèn)值是0,可以通過select <dbindex> 選擇所需的庫
databases 16

save

該指令控制了redis數(shù)據(jù)持久化機(jī)制的時機(jī),默認(rèn)redis會定時的將內(nèi)存的數(shù)據(jù)做一次快照保存到本
地磁盤。save seconds changes 參數(shù)控制了redis做內(nèi)存快照的時機(jī)。以下配置就說明了當(dāng)900秒
(15分鐘)如果redis有一個key發(fā)生了改變,redis就會做一次內(nèi)存快照, 將內(nèi)存的數(shù)據(jù)持久化到
本地磁盤。該指令可以配置多行。
save 900 1
save 900 1
save 300 10
save 60 10000
如果想禁用redis的內(nèi)存快照功能,可以將save指令注釋,或者添加save ""
stop-writes-on-bgsave-error
默認(rèn)狀態(tài)下,如果redis在達(dá)到了內(nèi)存快照的條件會在后臺自動的開啟一次后臺的保存,如果上一
次的后臺保存失敗了redis服務(wù)將禁止所有的寫請求,直到后臺寫回復(fù)后,redis服務(wù)就可以自動接
收client發(fā)來的寫請求了。默認(rèn)值是yes
stop-writes-on-bgsave-error yes

rdbcompression

該配置開啟redis服務(wù)器在做dump.rdb時,會對String對象的做LZF壓縮功能,這種配置可以節(jié)省
更多的磁盤空間,但是會消耗一定的CPU。
rdbcompression yes

rdbchecksum

該選項(xiàng)控制redis后臺在做rdb持久化的時候,都會在文件的結(jié)尾追加文件校驗(yàn),以確保文件的有
效性和完整性但是著同樣會在加載或者是生成dump.rdb時候降低10%的性能。如果你愿意也可以
關(guān)閉校驗(yàn)以獲取最大的性能。
rdbchecksum yes
dbfilename
指定rdb快照時候數(shù)據(jù)存儲的文件名。
dbfilename dump.rdb
dir
指定rdb快照或者AOF文件存儲的路徑。
dir ./

slaveof

主-從時候使用slaveof指令區(qū)同步主機(jī)的數(shù)據(jù)。redis的主從特點(diǎn):
1. redis的主從副本同步時異步的,可以配置min-slaves-to-write屬性停止寫操作一旦從機(jī)的數(shù)
目沒有達(dá)到既定的要求。
2. 可以讓部分從機(jī)從新同步一旦發(fā)現(xiàn)該從機(jī)個主機(jī)連接丟失了一點(diǎn)時間。
3. redis的從機(jī)都是自動的,無需用戶的干預(yù),從機(jī)會自動的連接主機(jī)并且主動的同步主機(jī)上的
數(shù)據(jù)。
slaveof <masterip> <masterport>

masterauth

如果從機(jī)在連接主機(jī)的時候,主機(jī)設(shè)置了訪問密碼,這個時候可以配置masterauth屬性設(shè)置從機(jī)
訪問主機(jī)的密碼。如果從機(jī)不提供密碼主機(jī)會拒絕從機(jī)的訪問。
masterauth <master-password>

slave-serve-stale-data

當(dāng)從機(jī)連接主機(jī)的做數(shù)據(jù)同步的時候或者從機(jī)丟失了和主機(jī)的連接,可以配置該配置選項(xiàng)更改從機(jī)
的工作狀態(tài)。
1. 當(dāng)配置為yes,無論從機(jī)處于何種狀態(tài)都可以選響應(yīng)客戶端的讀請求,缺點(diǎn)是有可能訪問到過
期或者為空的數(shù)據(jù)(這是主從的通?。?。
2. 配置為no,如果處于同步或者丟失連接,無論客戶端發(fā)送什么信息(除了INFO和slaveof),
從機(jī)全部回復(fù)err:SYNC。
slave-serve-stale-data yes

slave-read-only

配置從機(jī)只讀。從機(jī)的數(shù)據(jù)每次同步主機(jī)的時候會刷新。
slave-read-only yes

repl-diskless-sync

從機(jī)同步策略有兩種 disk和socket,警告目前 diskless同步依舊在實(shí)驗(yàn)階段。新的從機(jī)以及正在
重新鏈接從機(jī) 但這些機(jī)器已經(jīng)不可以從故障中恢復(fù)過來。這個時候,這時候從機(jī)需要做的就是同
步“full synchronization”。這個時候master和主機(jī)之間通過傳輸RDB文件做數(shù)據(jù)的完整同步,
這種RDB文件的同步策略有兩種方式:
1. Disk-backed:redis的主機(jī)創(chuàng)建一個新的進(jìn)程在本地創(chuàng)建一個RDB
文件,然后數(shù)據(jù)交給redis一點(diǎn)一點(diǎn)的傳輸給從機(jī)。
2. Diskless:redis主機(jī)創(chuàng)建一個新的進(jìn)程,該進(jìn)程直接講RDB文件寫給從機(jī)的socket,此過程
不會創(chuàng)建RDB文件。如果基于Disk-based的同步方 式,當(dāng)RDB文件創(chuàng)建結(jié)束以后,所有的從
機(jī)就會按照順序隊(duì)列依次下載RDB文件。但是基于網(wǎng)絡(luò)的方式,所有的從機(jī)也會 按照隊(duì)列方
式,如果傳輸過程出現(xiàn)了終止,redis主機(jī)會開啟一次新的傳輸。當(dāng)時用diskless傳輸主機(jī)會讀
取配置參數(shù)單位秒,用來等待從機(jī)到來緩存 從機(jī)服務(wù)隊(duì)列。因?yàn)榇疟P傳輸性能比較低,網(wǎng)絡(luò)
帶寬允許的情況下可以考慮使用diskless模式。
repl-diskless-sync no

repl-diskless-sync-delay

當(dāng)開啟diskless模式,在主機(jī)開始同步之前需要等待所有slave的到來,并將傳輸任務(wù)緩存到傳輸
隊(duì)列。默認(rèn)主機(jī)等待時間是5秒,如果設(shè)置為0 時候,傳輸就不會等待所有從機(jī)的到來。
repl-diskless-sync-delay 5

slave-priority

默認(rèn)每一個從機(jī)的優(yōu)先級都是100,該屬性在Redis Sentinel模式會用到,這里涉及到redis主從模
式下的故障自動轉(zhuǎn)移和主機(jī)的選舉。優(yōu)先級越高的slave在故障轉(zhuǎn)移的時候會被優(yōu)先選舉為主機(jī)。
值越小優(yōu)先級越高,但如果設(shè)置為0 就表示該機(jī)器永遠(yuǎn)都不可能晉升為master。
slave-priority 100

requirepass

設(shè)置本機(jī)的認(rèn)證密碼,無論是slave還是client都要做認(rèn)證。
requirepass jiangzz2013

appendonly

redis默認(rèn)使用RDB作為內(nèi)存數(shù)據(jù)持久話的一種機(jī)制,但是RDB機(jī)制的數(shù)據(jù)備份是通過配置save指
令去觸發(fā)后臺的 數(shù)據(jù)同步,這個時候有可能會導(dǎo)致幾分鐘內(nèi)的數(shù)據(jù)寫丟失,這個時候需可以嘗試
開啟AOF機(jī)制,這種機(jī)制可以比RDB機(jī)制有更好的數(shù)據(jù)持久話機(jī)制,AOF是通過記錄指令日志來
實(shí)現(xiàn)數(shù)據(jù)的安全,一旦設(shè)置了AOF,在重啟redis服務(wù)的時候,redis會默認(rèn)自動的加載
appedonly.aof文件。默認(rèn)情況 下aof是關(guān)閉的。
appendonly no

appendfilename

指定aof日志的文件名字。
appendfilename "appendonly-6379.aof"

appendfsync

該選項(xiàng)設(shè)置aof日志文件flush到appendfilename文件的時機(jī),可選值有3種:
1. always:會將每一次寫操作flush到文件中,慢但最安全
2. no:講指令的flush時機(jī)交給OS系統(tǒng)去決定,效率高
3. everysec:這是一種折中方案 介于always和no之間,每一秒鐘flush一次
如果不太確定選擇哪個直接配置everysec是不錯的選擇。
appendfsync everysec

no-appendfsync-on-rewrite

因?yàn)殚_啟AOF的fsync策略以后,后臺的保存進(jìn)程(RDB/AOF rewrite)繪執(zhí)行很多的IO操作。在
很多的linux系統(tǒng)指中,后臺的保存進(jìn)程可能會因?yàn)閒sync策略被阻塞,為了減輕這種阻塞可以配置
no- appendfsync-on-rewrite屬性去暫時阻止在bgsave或者bgrewriteaof的時候執(zhí)行fsynch();
如果系統(tǒng)存在延遲 的時候可以考慮講概述行修改為yes。
no-appendfsync-on-rewrite no

Automic Rewite

redis在日志文件達(dá)到一定比例的時候會自動重寫aof日志文件。重寫過程就是簡化aof日志文件,
所謂的簡化是更具內(nèi) 存的數(shù)據(jù)生成操作日志指令,改動作可以通過執(zhí)行BGREWRITEAOF指令觸
發(fā)。其中auto-aof-rewrite-percentage表示新的 aof文件已經(jīng)超出上一次aof文件的百分比的時
候就會開啟一次rewrite,如果已經(jīng)超出了百分比,但是aof文件依然小于64MB,就不會開啟
rewrite。
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

aof-load-truncated

當(dāng)在啟動redis的時候,有時候aof日志文件的結(jié)尾是不是完整的,這個時候redis就會終止啟動。
這種情況一般發(fā)生 在redis機(jī)器宕機(jī)。這個時候可以設(shè)置為yes,忽略。當(dāng)設(shè)置為no的時候,一旦
有截?cái)喱F(xiàn)象,redis就會終止啟動。這個時候用戶需要執(zhí)行redis-check-aof工具對日志問夾做處
理。注意這種設(shè)置不適用文件的中間截?cái)唷?br> aof-load-truncated yes

cluster-enabled

啟動redis的clsuster模式,默認(rèn)redis該選項(xiàng)是注釋起來的。注意:rediscluster代碼已經(jīng)處于成熟
階段,但是目前使用群體還需擴(kuò)大。
cluster-enabled yes

luster-config-file

每一個redis集群實(shí)例都有一個配置文件,用來保存節(jié)點(diǎn)信息,該文件是系統(tǒng)自動創(chuàng)建,但需要注
意如果一個系統(tǒng)上運(yùn)行多個rediscluster實(shí)例,注意文件名不要出現(xiàn)沖突。
cluster-config-file nodes-6379.conf

cluster-node-timeout

該選項(xiàng)用于配置集群節(jié)點(diǎn)的判斷是否宕機(jī)的時間參數(shù)。
cluster-node-timeout 15000

maxmemory-policy

內(nèi)存淘汰策略
noeviction:當(dāng)內(nèi)存不足以容納新寫入數(shù)據(jù)時,新寫入操作會報(bào)錯。應(yīng)該沒人用吧。
allkeys-lru:當(dāng)內(nèi)存不足以容納新寫入數(shù)據(jù)時,在鍵空間中,移除最近最少使用的key。推薦使用,目前項(xiàng)目在用這種。
allkeys-random:當(dāng)內(nèi)存不足以容納新寫入數(shù)據(jù)時,在鍵空間中,隨機(jī)移除某個key。應(yīng)該也沒人用吧,你不刪最少使用Key,去隨機(jī)刪。
volatile-lru:當(dāng)內(nèi)存不足以容納新寫入數(shù)據(jù)時,在設(shè)置了過期時間的鍵空間中,移除最近最少使用的key。這種情況一般是把redis既當(dāng)緩存,又做持久化存儲的時候才用。不推薦)
volatile-random:當(dāng)內(nèi)存不足以容納新寫入數(shù)據(jù)時,在設(shè)置了過期時間的鍵空間中,隨機(jī)移除某個key。依然不推薦
volatile-ttl:當(dāng)內(nèi)存不足以容納新寫入數(shù)據(jù)時,在設(shè)置了過期時間的鍵空間中,有更早過期時間的key優(yōu)先移除。不推薦
如果沒有設(shè)置 expire 的key, 不滿足先決條件(prerequisites); 那么 volatile-lru, volatile-random 和 volatile-ttl 策略的行為, 和 noeviction(不刪除) 基本上一致。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容