日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

Redis3.0 配置文件说明

發(fā)布時(shí)間:2023/11/27 生活经验 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis3.0 配置文件说明 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

背景:

以前有篇文章已經(jīng)結(jié)果過(guò)了,現(xiàn)在復(fù)習(xí)一下,對(duì)Redis3.0進(jìn)行說(shuō)明:

參數(shù)說(shuō)明:

#redis.conf
# Redis configuration file example.
# ./redis-server /path/to/redis.conf################################## INCLUDES ###################################
#這在你有標(biāo)準(zhǔn)配置模板但是每個(gè)redis服務(wù)器又需要個(gè)性設(shè)置的時(shí)候很有用。
# include /path/to/local.conf
# include /path/to/other.conf################################ GENERAL ######################################是否在后臺(tái)執(zhí)行,yes:后臺(tái)運(yùn)行;no:不是后臺(tái)運(yùn)行(老版本默認(rèn))
daemonize yes

??#3.2里的參數(shù),是否開(kāi)啟保護(hù)模式,默認(rèn)開(kāi)啟。要是配置里沒(méi)有指定bind和密碼。開(kāi)啟該參數(shù)后,redis只會(huì)本地進(jìn)行訪問(wèn),拒絕外部訪問(wèn)。要是開(kāi)啟了密碼 ? 和bind,可以開(kāi)啟。否 ? 則最好關(guān)閉,設(shè)置為no。
? protected-mode yes

#redis的進(jìn)程文件
pidfile /var/run/redis/redis-server.pid#redis監(jiān)聽(tīng)的端口號(hào)。
port 6379

#此參數(shù)確定了TCP連接中已完成隊(duì)列(完成三次握手之后)的長(zhǎng)度, 當(dāng)然此值必須不大于Linux系統(tǒng)定義的/proc/sys/net/core/somaxconn值,默認(rèn)是511,而Linux的默認(rèn)參數(shù)值是128。當(dāng)系統(tǒng)并發(fā)量大并且客戶端速度緩慢的時(shí)候,可以將這二個(gè)參數(shù)一起參考設(shè)定。該內(nèi)核參數(shù)默認(rèn)值一般是128,對(duì)于負(fù)載很大的服務(wù)程序來(lái)說(shuō)大大的不夠。一般會(huì)將它修改為2048或者更大。在/etc/sysctl.conf中添加:net.core.somaxconn = 2048,然后在終端中執(zhí)行sysctl -p。
tcp-backlog 511#指定 redis 只接收來(lái)自于該 IP 地址的請(qǐng)求,如果不進(jìn)行設(shè)置,那么將處理所有請(qǐng)求
bind 127.0.0.1#配置unix socket來(lái)讓redis支持監(jiān)聽(tīng)本地連接。
# unixsocket /var/run/redis/redis.sock
#配置unix socket使用文件的權(quán)限
# unixsocketperm 700# 此參數(shù)為設(shè)置客戶端空閑超過(guò)timeout,服務(wù)端會(huì)斷開(kāi)連接,為0則服務(wù)端不會(huì)主動(dòng)斷開(kāi)連接,不能小于0。
timeout 0#tcp keepalive參數(shù)。如果設(shè)置不為0,就使用配置tcp的SO_KEEPALIVE值,使用keepalive有兩個(gè)好處:檢測(cè)掛掉的對(duì)端。降低中間設(shè)備出問(wèn)題而導(dǎo)致網(wǎng)絡(luò)看似連接卻已經(jīng)與對(duì)端端口的問(wèn)題。在Linux內(nèi)核中,設(shè)置了keepalive,redis會(huì)定時(shí)給對(duì)端發(fā)送ack。檢測(cè)到對(duì)端關(guān)閉需要兩倍的設(shè)置值。
tcp-keepalive 0#指定了服務(wù)端日志的級(jí)別。級(jí)別包括:debug(很多信息,方便開(kāi)發(fā)、測(cè)試),verbose(許多有用的信息,但是沒(méi)有debug級(jí)別信息多),notice(適當(dāng)?shù)娜罩炯?jí)別,適合生產(chǎn)環(huán)境),warn(只有非常重要的信息)
loglevel notice#指定了記錄日志的文件。空字符串的話,日志會(huì)打印到標(biāo)準(zhǔn)輸出設(shè)備。后臺(tái)運(yùn)行的redis標(biāo)準(zhǔn)輸出是/dev/null。
logfile /var/log/redis/redis-server.log#是否打開(kāi)記錄syslog功能
# syslog-enabled no#syslog的標(biāo)識(shí)符。
# syslog-ident redis#日志的來(lái)源、設(shè)備
# syslog-facility local0#數(shù)據(jù)庫(kù)的數(shù)量,默認(rèn)使用的數(shù)據(jù)庫(kù)是DB 0。可以通過(guò)”SELECT “命令選擇一個(gè)db
databases 16

################################ SNAPSHOTTING ################################
# 快照配置
# 注釋掉“save”這一行配置項(xiàng)就可以讓保存數(shù)據(jù)庫(kù)功能失效
# 設(shè)置sedis進(jìn)行數(shù)據(jù)庫(kù)鏡像的頻率。
# 900秒(15分鐘)內(nèi)至少1個(gè)key值改變(則進(jìn)行數(shù)據(jù)庫(kù)保存--持久化) 
# 300秒(5分鐘)內(nèi)至少10個(gè)key值改變(則進(jìn)行數(shù)據(jù)庫(kù)保存--持久化) 
# 60秒(1分鐘)內(nèi)至少10000個(gè)key值改變(則進(jìn)行數(shù)據(jù)庫(kù)保存--持久化)
save 900 1
save 300 10
save 60 10000#當(dāng)RDB持久化出現(xiàn)錯(cuò)誤后,是否依然進(jìn)行繼續(xù)進(jìn)行工作,yes:不能進(jìn)行工作,no:可以繼續(xù)進(jìn)行工作,可以通過(guò)info中的rdb_last_bgsave_status了解RDB持久化是否有錯(cuò)誤
stop-writes-on-bgsave-error yes#使用壓縮rdb文件,rdb文件壓縮使用LZF壓縮算法,yes:壓縮,但是需要一些cpu的消耗。no:不壓縮,需要更多的磁盤(pán)空間
rdbcompression yes#是否校驗(yàn)rdb文件。從rdb格式的第五個(gè)版本開(kāi)始,在rdb文件的末尾會(huì)帶上CRC64的校驗(yàn)和。這跟有利于文件的容錯(cuò)性,但是在保存rdb文件的時(shí)候,會(huì)有大概10%的性能損耗,所以如果你追求高性能,可以關(guān)閉該配置。
rdbchecksum yes#rdb文件的名稱
dbfilename dump.rdb#數(shù)據(jù)目錄,數(shù)據(jù)庫(kù)的寫(xiě)入會(huì)在這個(gè)目錄。rdb、aof文件也會(huì)寫(xiě)在這個(gè)目錄
dir /var/lib/redis################################# REPLICATION #################################
#復(fù)制選項(xiàng),slave復(fù)制對(duì)應(yīng)的master。
# slaveof <masterip> <masterport>#如果master設(shè)置了requirepass,那么slave要連上master,需要有master的密碼才行。masterauth就是用來(lái)配置master的密碼,這樣可以在連上master后進(jìn)行認(rèn)證。
# masterauth <master-password>

#當(dāng)從庫(kù)同主機(jī)失去連接或者復(fù)制正在進(jìn)行,從機(jī)庫(kù)有兩種運(yùn)行方式:1) 如果slave-serve-stale-data設(shè)置為yes(默認(rèn)設(shè)置),從庫(kù)會(huì)繼續(xù)響應(yīng)客戶端的請(qǐng)求。2) 如果slave-serve-stale-data設(shè)置為no,除去INFO和SLAVOF命令之外的任何請(qǐng)求都會(huì)返回一個(gè)錯(cuò)誤”SYNC with master in progress”。
slave-serve-stale-data yes#作為從服務(wù)器,默認(rèn)情況下是只讀的(yes),可以修改成NO,用于寫(xiě)(不建議)。
slave-read-only yes#是否使用socket方式復(fù)制數(shù)據(jù)。目前redis復(fù)制提供兩種方式,disk和socket。如果新的slave連上來(lái)或者重連的slave無(wú)法部分同步,就會(huì)執(zhí)行全量同步,master會(huì)生成rdb文件。有2種方式:disk方式是master創(chuàng)建一個(gè)新的進(jìn)程把rdb文件保存到磁盤(pán),再把磁盤(pán)上的rdb文件傳遞給slave。socket是master創(chuàng)建一個(gè)新的進(jìn)程,直接把rdb文件以socket的方式發(fā)給slave。disk方式的時(shí)候,當(dāng)一個(gè)rdb保存的過(guò)程中,多個(gè)slave都能共享這個(gè)rdb文件。socket的方式就的一個(gè)個(gè)slave順序復(fù)制。在磁盤(pán)速度緩慢,網(wǎng)速快的情況下推薦用socket方式。
repl-diskless-sync no#diskless復(fù)制的延遲時(shí)間,防止設(shè)置為0。一旦復(fù)制開(kāi)始,節(jié)點(diǎn)不會(huì)再接收新slave的復(fù)制請(qǐng)求直到下一個(gè)rdb傳輸。所以最好等待一段時(shí)間,等更多的slave連上來(lái)。
repl-diskless-sync-delay 5

#slave根據(jù)指定的時(shí)間間隔向服務(wù)器發(fā)送ping請(qǐng)求。時(shí)間間隔可以通過(guò) repl_ping_slave_period 來(lái)設(shè)置,默認(rèn)10秒。
# repl-ping-slave-period 10

#復(fù)制連接超時(shí)時(shí)間。master和slave都有超時(shí)時(shí)間的設(shè)置。master檢測(cè)到slave上次發(fā)送的時(shí)間超過(guò)repl-timeout,即認(rèn)為slave離線,清除該slave信息。slave檢測(cè)到上次和master交互的時(shí)間超過(guò)repl-timeout,則認(rèn)為master離線。需要注意的是repl-timeout需要設(shè)置一個(gè)比repl-ping-slave-period更大的值,不然會(huì)經(jīng)常檢測(cè)到超時(shí)。
# repl-timeout 60#是否禁止復(fù)制tcp鏈接的tcp nodelay參數(shù),可傳遞yes或者no。默認(rèn)是no,即使用tcp nodelay。如果master設(shè)置了yes來(lái)禁止tcp nodelay設(shè)置,在把數(shù)據(jù)復(fù)制給slave的時(shí)候,會(huì)減少包的數(shù)量和更小的網(wǎng)絡(luò)帶寬。但是這也可能帶來(lái)數(shù)據(jù)的延遲。默認(rèn)我們推薦更小的延遲,但是在數(shù)據(jù)量傳輸很大的場(chǎng)景下,建議選擇yes。
repl-disable-tcp-nodelay no#復(fù)制緩沖區(qū)大小,這是一個(gè)環(huán)形復(fù)制緩沖區(qū),用來(lái)保存最新復(fù)制的命令。這樣在slave離線的時(shí)候,不需要完全復(fù)制master的數(shù)據(jù),如果可以執(zhí)行部分同步,只需要把緩沖區(qū)的部分?jǐn)?shù)據(jù)復(fù)制給slave,就能恢復(fù)正常復(fù)制狀態(tài)。緩沖區(qū)的大小越大,slave離線的時(shí)間可以更長(zhǎng),復(fù)制緩沖區(qū)只有在有slave連接的時(shí)候才分配內(nèi)存。沒(méi)有slave的一段時(shí)間,內(nèi)存會(huì)被釋放出來(lái),默認(rèn)1m。
# repl-backlog-size 5mb#master沒(méi)有slave一段時(shí)間會(huì)釋放復(fù)制緩沖區(qū)的內(nèi)存,repl-backlog-ttl用來(lái)設(shè)置該時(shí)間長(zhǎng)度。單位為秒。
# repl-backlog-ttl 3600#當(dāng)master不可用,Sentinel會(huì)根據(jù)slave的優(yōu)先級(jí)選舉一個(gè)master。最低的優(yōu)先級(jí)的slave,當(dāng)選master。而配置成0,永遠(yuǎn)不會(huì)被選舉。
slave-priority 100

#redis提供了可以讓master停止寫(xiě)入的方式,如果配置了min-slaves-to-write,健康的slave的個(gè)數(shù)小于N,mater就禁止寫(xiě)入。master最少得有多少個(gè)健康的slave存活才能執(zhí)行寫(xiě)命令。這個(gè)配置雖然不能保證N個(gè)slave都一定能接收到master的寫(xiě)操作,但是能避免沒(méi)有足夠健康的slave的時(shí)候,master不能寫(xiě)入來(lái)避免數(shù)據(jù)丟失。設(shè)置為0是關(guān)閉該功能。
# min-slaves-to-write 3

#延遲小于min-slaves-max-lag秒的slave才認(rèn)為是健康的slave。
# min-slaves-max-lag 10# 設(shè)置1或另一個(gè)設(shè)置為0禁用這個(gè)特性。
# Setting one or the other to 0 disables the feature.
# By default min-slaves-to-write is set to 0 (feature disabled) and
# min-slaves-max-lag is set to 10.################################## SECURITY ###################################
#requirepass配置可以讓用戶使用AUTH命令來(lái)認(rèn)證密碼,才能使用其他命令。這讓redis可以使用在不受信任的網(wǎng)絡(luò)中。為了保持向后的兼容性,可以注釋該命令,因?yàn)榇蟛糠钟脩粢膊恍枰J(rèn)證。使用requirepass的時(shí)候需要注意,因?yàn)閞edis太快了,每秒可以認(rèn)證15w次密碼,簡(jiǎn)單的密碼很容易被攻破,所以最好使用一個(gè)更復(fù)雜的密碼。
# requirepass foobared#把危險(xiǎn)的命令給修改成其他名稱。比如CONFIG命令可以重命名為一個(gè)很難被猜到的命令,這樣用戶不能使用,而內(nèi)部工具還能接著使用。
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52#設(shè)置成一個(gè)空的值,可以禁止一個(gè)命令
# rename-command CONFIG ""
################################### LIMITS ##################################### 設(shè)置能連上redis的最大客戶端連接數(shù)量。默認(rèn)是10000個(gè)客戶端連接。由于redis不區(qū)分連接是客戶端連接還是內(nèi)部打開(kāi)文件或者和slave連接等,所以maxclients最小建議設(shè)置到32。如果超過(guò)了maxclients,redis會(huì)給新的連接發(fā)送’max number of clients reached’,并關(guān)閉連接。
# maxclients 10000#redis配置的最大內(nèi)存容量。當(dāng)內(nèi)存滿了,需要配合maxmemory-policy策略進(jìn)行處理。注意slave的輸出緩沖區(qū)是不計(jì)算在maxmemory內(nèi)的。所以為了防止主機(jī)內(nèi)存使用完,建議設(shè)置的maxmemory需要更小一些。
# maxmemory <bytes>#內(nèi)存容量超過(guò)maxmemory后的處理策略。
#volatile-lru:利用LRU算法移除設(shè)置過(guò)過(guò)期時(shí)間的key。
#volatile-random:隨機(jī)移除設(shè)置過(guò)過(guò)期時(shí)間的key。
#volatile-ttl:移除即將過(guò)期的key,根據(jù)最近過(guò)期時(shí)間來(lái)刪除(輔以TTL)
#allkeys-lru:利用LRU算法移除任何key。
#allkeys-random:隨機(jī)移除任何key。
#noeviction:不移除任何key,只是返回一個(gè)寫(xiě)錯(cuò)誤。
#上面的這些驅(qū)逐策略,如果redis沒(méi)有合適的key驅(qū)逐,對(duì)于寫(xiě)命令,還是會(huì)返回錯(cuò)誤。redis將不再接收寫(xiě)請(qǐng)求,只接收get請(qǐng)求。寫(xiě)命令包括:set setnx setex append incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby getset mset msetnx exec sort。
# maxmemory-policy noeviction#lru檢測(cè)的樣本數(shù)。使用lru或者ttl淘汰算法,從需要淘汰的列表中隨機(jī)選擇sample個(gè)key,選出閑置時(shí)間最長(zhǎng)的key移除。
# maxmemory-samples 5

############################## APPEND ONLY MODE ###############################
#默認(rèn)redis使用的是rdb方式持久化,這種方式在許多應(yīng)用中已經(jīng)足夠用了。但是redis如果中途宕機(jī),會(huì)導(dǎo)致可能有幾分鐘的數(shù)據(jù)丟失,根據(jù)save來(lái)策略進(jìn)行持久化,Append Only File是另一種持久化方式,可以提供更好的持久化特性。Redis會(huì)把每次寫(xiě)入的數(shù)據(jù)在接收后都寫(xiě)入 appendonly.aof 文件,每次啟動(dòng)時(shí)Redis都會(huì)先把這個(gè)文件的數(shù)據(jù)讀入內(nèi)存里,先忽略RDB文件。
appendonly no#aof文件名
appendfilename "appendonly.aof"

#aof持久化策略的配置
#no表示不執(zhí)行fsync,由操作系統(tǒng)保證數(shù)據(jù)同步到磁盤(pán),速度最快。
#always表示每次寫(xiě)入都執(zhí)行fsync,以保證數(shù)據(jù)同步到磁盤(pán)。
#everysec表示每秒執(zhí)行一次fsync,可能會(huì)導(dǎo)致丟失這1s數(shù)據(jù)。
appendfsync everysec# 在aof重寫(xiě)或者寫(xiě)入rdb文件的時(shí)候,會(huì)執(zhí)行大量IO,此時(shí)對(duì)于everysec和always的aof模式來(lái)說(shuō),執(zhí)行fsync會(huì)造成阻塞過(guò)長(zhǎng)時(shí)間,no-appendfsync-on-rewrite字段設(shè)置為默認(rèn)設(shè)置為no。如果對(duì)延遲要求很高的應(yīng)用,這個(gè)字段可以設(shè)置為yes,否則還是設(shè)置為no,這樣對(duì)持久化特性來(lái)說(shuō)這是更安全的選擇。設(shè)置為yes表示rewrite期間對(duì)新寫(xiě)操作不fsync,暫時(shí)存在內(nèi)存中,等rewrite完成后再寫(xiě)入,默認(rèn)為no,建議yes。Linux的默認(rèn)fsync策略是30秒。可能丟失30秒數(shù)據(jù)。
no-appendfsync-on-rewrite no#aof自動(dòng)重寫(xiě)配置。當(dāng)目前aof文件大小超過(guò)上一次重寫(xiě)的aof文件大小的百分之多少進(jìn)行重寫(xiě),即當(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-percentage 100
#設(shè)置允許重寫(xiě)的最小aof文件大小,避免了達(dá)到約定百分比但尺寸仍然很小的情況還要重寫(xiě)
auto-aof-rewrite-min-size 64mb#aof文件可能在尾部是不完整的,當(dāng)redis啟動(dòng)的時(shí)候,aof文件的數(shù)據(jù)被載入內(nèi)存。重啟可能發(fā)生在redis所在的主機(jī)操作系統(tǒng)宕機(jī)后,尤其在ext4文件系統(tǒng)沒(méi)有加上data=ordered選項(xiàng)(redis宕機(jī)或者異常終止不會(huì)造成尾部不完整現(xiàn)象。)出現(xiàn)這種現(xiàn)象,可以選擇讓redis退出,或者導(dǎo)入盡可能多的數(shù)據(jù)。如果選擇的是yes,當(dāng)截?cái)嗟腶of文件被導(dǎo)入的時(shí)候,會(huì)自動(dòng)發(fā)布一個(gè)log給客戶端然后load。如果是no,用戶必須手動(dòng)redis-check-aof修復(fù)AOF文件才可以。
aof-load-truncated yes################################ LUA SCRIPTING ###############################
# 如果達(dá)到最大時(shí)間限制(毫秒),redis會(huì)記個(gè)log,然后返回error。當(dāng)一個(gè)腳本超過(guò)了最大時(shí)限。只有SCRIPT KILL和SHUTDOWN NOSAVE可以用。第一個(gè)可以殺沒(méi)有調(diào)write命令的東西。要是已經(jīng)調(diào)用了write,只能用第二個(gè)命令殺。
lua-time-limit 5000

################################ REDIS CLUSTER ###############################
#集群開(kāi)關(guān),默認(rèn)是不開(kāi)啟集群模式。
# cluster-enabled yes#集群配置文件的名稱,每個(gè)節(jié)點(diǎn)都有一個(gè)集群相關(guān)的配置文件,持久化保存集群的信息。這個(gè)文件并不需要手動(dòng)配置,這個(gè)配置文件有Redis生成并更新,每個(gè)Redis集群節(jié)點(diǎn)需要一個(gè)單獨(dú)的配置文件,請(qǐng)確保與實(shí)例運(yùn)行的系統(tǒng)中配置文件名稱不沖突
# cluster-config-file nodes-6379.conf#節(jié)點(diǎn)互連超時(shí)的閥值。集群節(jié)點(diǎn)超時(shí)毫秒數(shù)
# cluster-node-timeout 15000

? #在進(jìn)行故障轉(zhuǎn)移的時(shí)候,全部slave都會(huì)請(qǐng)求申請(qǐng)為master,但是有些slave可能與master斷開(kāi)連接一段時(shí)間了,導(dǎo)致數(shù)據(jù)過(guò)于陳舊,這樣的slave不應(yīng)該被提升為master。該參數(shù)就是用來(lái)判>斷slave節(jié)點(diǎn)與master斷線的時(shí)間是否過(guò)長(zhǎng)。判斷方法是:
? #比較slave斷開(kāi)連接的時(shí)間和(node-timeout * slave-validity-factor) + repl-ping-slave-period
? #如果節(jié)點(diǎn)超時(shí)時(shí)間為三十秒, 并且slave-validity-factor為10,假設(shè)默認(rèn)的repl-ping-slave-period是10秒,即如果超過(guò)310秒slave將不會(huì)嘗試進(jìn)行故障轉(zhuǎn)移
? #可能出現(xiàn)由于某主節(jié)點(diǎn)失聯(lián)卻沒(méi)有從節(jié)點(diǎn)能頂上的情況,從而導(dǎo)致集群不能正常工作,在這種情況下,只有等到原來(lái)的主節(jié)點(diǎn)重新回歸到集群,集群才恢復(fù)運(yùn)作
? #如果設(shè)置成0,則無(wú)論從節(jié)點(diǎn)與主節(jié)點(diǎn)失聯(lián)多久,從節(jié)點(diǎn)都會(huì)嘗試升級(jí)成主節(jié)
? # cluster-slave-validity-factor 10

? #master的slave數(shù)量大于該值,slave才能遷移到其他孤立master上,如這個(gè)參數(shù)若被設(shè)為2,那么只有當(dāng)一個(gè)主節(jié)點(diǎn)擁有2 個(gè)可工作的從節(jié)點(diǎn)時(shí),它的一個(gè)從節(jié)點(diǎn)會(huì)嘗試遷移。
? #主節(jié)點(diǎn)需要的最小從節(jié)點(diǎn)數(shù),只有達(dá)到這個(gè)數(shù),主節(jié)點(diǎn)失敗時(shí),它從節(jié)點(diǎn)才會(huì)進(jìn)行遷移。
? # cluster-migration-barrier 1

? #默認(rèn)情況下,集群全部的slot有節(jié)點(diǎn)分配,集群狀態(tài)才為ok,才能提供服務(wù)。設(shè)置為no,可以在slot沒(méi)有全部分配的時(shí)候提供服務(wù)。不建議打開(kāi)該配置,這樣會(huì)造成分區(qū)的時(shí)候,小分區(qū)的mster一直在接受寫(xiě)請(qǐng)求,而造成很長(zhǎng)時(shí)間數(shù)據(jù)不一致。
? #在部分key所在的節(jié)點(diǎn)不可用時(shí),如果此參數(shù)設(shè)置為”yes”(默認(rèn)值), 則整個(gè)集群停止接受操作;如果此參數(shù)設(shè)置為”no”,則集群依然為可達(dá)節(jié)點(diǎn)上的key提供讀操作
? # cluster-require-full-coverage yes

################################## SLOW LOG ###################################
###slog log是用來(lái)記錄redis運(yùn)行中執(zhí)行比較慢的命令耗時(shí)。當(dāng)命令的執(zhí)行超過(guò)了指定時(shí)間,就記錄在slow log中,slog log保存在內(nèi)存中,所以沒(méi)有IO操作。
#執(zhí)行時(shí)間比slowlog-log-slower-than大的請(qǐng)求記錄到slowlog里面,單位是微秒,所以1000000就是1秒。注意,負(fù)數(shù)時(shí)間會(huì)禁用慢查詢?nèi)罩?#xff0c;而0則會(huì)強(qiáng)制記錄所有命令。
slowlog-log-slower-than 10000

#慢查詢?nèi)罩鹃L(zhǎng)度。當(dāng)一個(gè)新的命令被寫(xiě)進(jìn)日志的時(shí)候,最老的那個(gè)記錄會(huì)被刪掉。這個(gè)長(zhǎng)度沒(méi)有限制。只要有足夠的內(nèi)存就行。你可以通過(guò) SLOWLOG RESET 來(lái)釋放內(nèi)存。
slowlog-max-len 128

################################ LATENCY MONITOR ##############################
#延遲監(jiān)控功能是用來(lái)監(jiān)控redis中執(zhí)行比較緩慢的一些操作,用LATENCY打印redis實(shí)例在跑命令時(shí)的耗時(shí)圖表。只記錄大于等于下邊設(shè)置的值的操作。0的話,就是關(guān)閉監(jiān)視。默認(rèn)延遲監(jiān)控功能是關(guān)閉的,如果你需要打開(kāi),也可以通過(guò)CONFIG SET命令動(dòng)態(tài)設(shè)置。
latency-monitor-threshold 0

############################# EVENT NOTIFICATION ##############################
#鍵空間通知使得客戶端可以通過(guò)訂閱頻道或模式,來(lái)接收那些以某種方式改動(dòng)了 Redis 數(shù)據(jù)集的事件。因?yàn)殚_(kāi)啟鍵空間通知功能需要消耗一些 CPU ,所以在默認(rèn)配置下,該功能處于關(guān)閉狀態(tài)。
#notify-keyspace-events 的參數(shù)可以是以下字符的任意組合,它指定了服務(wù)器該發(fā)送哪些類型的通知:
##K 鍵空間通知,所有通知以 __keyspace@__ 為前綴
##E 鍵事件通知,所有通知以 __keyevent@__ 為前綴
##g DEL 、 EXPIRE 、 RENAME 等類型無(wú)關(guān)的通用命令的通知
##$ 字符串命令的通知
##l 列表命令的通知
##s 集合命令的通知
##h 哈希命令的通知
##z 有序集合命令的通知
##x 過(guò)期事件:每當(dāng)有過(guò)期鍵被刪除時(shí)發(fā)送
##e 驅(qū)逐(evict)事件:每當(dāng)有鍵因?yàn)?maxmemory 政策而被刪除時(shí)發(fā)送
##A 參數(shù) g$lshzxe 的別名
#輸入的參數(shù)中至少要有一個(gè) K 或者 E,否則的話,不管其余的參數(shù)是什么,都不會(huì)有任何 通知被分發(fā)。詳細(xì)使用可以參考http://redis.io/topics/notificationsnotify-keyspace-events ""

############################### ADVANCED CONFIG ###############################
#數(shù)據(jù)量小于等于hash-max-ziplist-entries的用ziplist,大于hash-max-ziplist-entries用hash
hash-max-ziplist-entries 512
#value大小小于等于hash-max-ziplist-value的用ziplist,大于hash-max-ziplist-value用hash。
hash-max-ziplist-value 64

#數(shù)據(jù)量小于等于list-max-ziplist-entries用ziplist,大于list-max-ziplist-entries用list。
list-max-ziplist-entries 512
#value大小小于等于list-max-ziplist-value的用ziplist,大于list-max-ziplist-value用list。
list-max-ziplist-value 64

#數(shù)據(jù)量小于等于set-max-intset-entries用iniset,大于set-max-intset-entries用set。
set-max-intset-entries 512

#數(shù)據(jù)量小于等于zset-max-ziplist-entries用ziplist,大于zset-max-ziplist-entries用zset。
zset-max-ziplist-entries 128
#value大小小于等于zset-max-ziplist-value用ziplist,大于zset-max-ziplist-value用zset。
zset-max-ziplist-value 64

#value大小小于等于hll-sparse-max-bytes使用稀疏數(shù)據(jù)結(jié)構(gòu)(sparse),大于hll-sparse-max-bytes使用稠密的數(shù)據(jù)結(jié)構(gòu)(dense)。一個(gè)比16000大的value是幾乎沒(méi)用的,建議的value大概為3000。如果對(duì)CPU要求不高,對(duì)空間要求較高的,建議設(shè)置到10000左右。
hll-sparse-max-bytes 3000

#Redis將在每100毫秒時(shí)使用1毫秒的CPU時(shí)間來(lái)對(duì)redis的hash表進(jìn)行重新hash,可以降低內(nèi)存的使用。當(dāng)你的使用場(chǎng)景中,有非常嚴(yán)格的實(shí)時(shí)性需要,不能夠接受Redis時(shí)不時(shí)的對(duì)請(qǐng)求有2毫秒的延遲的話,把這項(xiàng)配置為no。如果沒(méi)有這么嚴(yán)格的實(shí)時(shí)性要求,可以設(shè)置為yes,以便能夠盡可能快的釋放內(nèi)存。
activerehashing yes##對(duì)客戶端輸出緩沖進(jìn)行限制可以強(qiáng)迫那些不從服務(wù)器讀取數(shù)據(jù)的客戶端斷開(kāi)連接,用來(lái)強(qiáng)制關(guān)閉傳輸緩慢的客戶端。
#對(duì)于normal client,第一個(gè)0表示取消hard limit,第二個(gè)0和第三個(gè)0表示取消soft limit,normal client默認(rèn)取消限制,因?yàn)槿绻麤](méi)有尋問(wèn),他們是不會(huì)接收數(shù)據(jù)的。
client-output-buffer-limit normal 0 0 0
#對(duì)于slave client和MONITER client,如果client-output-buffer一旦超過(guò)256mb,又或者超過(guò)64mb持續(xù)60秒,那么服務(wù)器就會(huì)立即斷開(kāi)客戶端連接。
client-output-buffer-limit slave 256mb 64mb 60
#對(duì)于pubsub client,如果client-output-buffer一旦超過(guò)32mb,又或者超過(guò)8mb持續(xù)60秒,那么服務(wù)器就會(huì)立即斷開(kāi)客戶端連接。
client-output-buffer-limit pubsub 32mb 8mb 60

#redis執(zhí)行任務(wù)的頻率為1s除以hz。
hz 10

#在aof重寫(xiě)的時(shí)候,如果打開(kāi)了aof-rewrite-incremental-fsync開(kāi)關(guān),系統(tǒng)會(huì)每32MB執(zhí)行一次fsync。這對(duì)于把文件寫(xiě)入磁盤(pán)是有幫助的,可以避免過(guò)大的延遲峰值。
aof-rewrite-incremental-fsync yes

sentinel的設(shè)置sentinel.conf)說(shuō)明:

#####
#####    sentinel 配置說(shuō)明
######Sentinel實(shí)例的端口號(hào)
port 26379#Sentinel 實(shí)例的目錄
dir /tmp

#日志文件
logfile /var/log/redis/redis-server.log

#后臺(tái)執(zhí)行
daemonize yes

#3.2里的參數(shù),是否開(kāi)啟保護(hù)模式,默認(rèn)開(kāi)啟。要是配置里沒(méi)有指定bind和密碼。開(kāi)啟該參數(shù)后,redis只會(huì)本地進(jìn)行訪問(wèn),拒絕外部訪問(wèn)。要是開(kāi)啟了密碼 ? 和bind,可以開(kāi)啟。否 ? 則最好關(guān)閉,設(shè)置為no。
protected-mode no#格式:sentinel
<option_name> <master_name> <option_value>;這一行代表sentinel監(jiān)控的master的名字叫做mymaster,地址為127.0.0.1:6379,行尾最后的一個(gè)2代表什么意思呢?我們知道,網(wǎng)絡(luò)是不可靠的,有時(shí)候一個(gè)sentinel會(huì)因?yàn)榫W(wǎng)絡(luò)堵塞而誤以為一個(gè)master redis已經(jīng)死掉了,當(dāng)sentinel集群式,解決這個(gè)問(wèn)題的方法就變得很簡(jiǎn)單,只需要多個(gè)sentinel互相溝通來(lái)確認(rèn)某個(gè)master是否真的死了,這個(gè)2代表,當(dāng)集群中有2個(gè)sentinel認(rèn)為master死了時(shí),才能真正認(rèn)為該master已經(jīng)不可用了。 sentinel monitor mymaster 127.0.0.1 6379 2#sentinel會(huì)向master發(fā)送心跳PING來(lái)確認(rèn)master是否存活,如果master在“一定時(shí)間范圍”內(nèi)不回應(yīng)PONG 或者是回復(fù)了一個(gè)錯(cuò)誤消息,那么這個(gè)sentinel會(huì)主觀地(單方面地)認(rèn)為這個(gè)master已經(jīng)不可用了(subjectively down, 也簡(jiǎn)稱為SDOWN)。而這個(gè)down-after-milliseconds就是用來(lái)指定這個(gè)“一定時(shí)間范圍”的,默認(rèn)單位是毫秒,默認(rèn)30秒。 sentinel down-after-milliseconds mymaster 30000#在發(fā)生failover主備切換時(shí),這個(gè)選項(xiàng)指定了最多可以有多少個(gè)slave同時(shí)對(duì)新的master進(jìn)行同步,這個(gè)數(shù)字越小,完成failover所需的時(shí)間就越長(zhǎng),但是如果這個(gè)數(shù)字越大,就意味著越多的slave因?yàn)閞eplication而不可用。可以通過(guò)將這個(gè)值設(shè)為 1 來(lái)保證每次只有一個(gè)slave處于不能處理命令請(qǐng)求的狀態(tài)。 sentinel parallel-syncs mymaster 1#failover過(guò)期時(shí)間,當(dāng)failover開(kāi)始后,在此時(shí)間內(nèi)仍然沒(méi)有觸發(fā)任何failover操作,當(dāng)前sentinel將會(huì)認(rèn)為此次failoer失敗。默認(rèn)180秒,即3minutes. sentinel failover-timeout mymaster 180000
#設(shè)置連master和slaves驗(yàn)證密碼,在監(jiān)控redis實(shí)例時(shí)很有用
#sentinel auth-pass mymaster xxxxxxx
#發(fā)生切換之后執(zhí)行的一個(gè)自定義腳本:如發(fā)郵件、vip切換等 #sentinel notification
-script <master-name> <script-path>
#發(fā)生切換之后執(zhí)行的一個(gè)自定義腳本:如發(fā)郵件、vip切換等
#sentinel client-reconfig-script T1 /opt/bin/notify.py

redis配置模板:

#redis.conf
# Redis configuration file example.
# ./redis-server /path/to/redis.conf
daemonize yes
pidfile /var/run/redis/redis-server.pid
port 6379
tcp-backlog 511
#bind 127.0.0.1
unixsocket /var/run/redis/redis.sock
#unixsocketperm 700timeout 0
tcp-keepalive 0loglevel notice
logfile /var/log/redis/redis-server.log# syslog-enabled no
# syslog-ident redis
# syslog-facility local0databases 16################################ SNAPSHOTTING  ################################
save 900 1
save 300 10
save 60 10000stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yesdbfilename dump.rdb
dir /var/lib/redis################################# REPLICATION #################################
# slaveof <masterip> <masterport>
# masterauth <master-password>slave-serve-stale-data yes
slave-read-only yesrepl-diskless-sync no
repl-diskless-sync-delay 5# repl-ping-slave-period 10
# repl-timeout 60repl-disable-tcp-nodelay no
repl-backlog-size 5mb
repl-backlog-ttl 3600slave-priority 100#min-slaves-to-write 3
# min-slaves-max-lag 10################################## SECURITY ###################################
# requirepass foobared
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
# rename-command CONFIG ""
################################### LIMITS ####################################
maxclients 10000
#maxmemory <bytes>
maxmemory-policy noeviction
# maxmemory-samples 5############################## APPEND ONLY MODE ###############################
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysecno-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes################################ LUA SCRIPTING  ###############################
lua-time-limit 5000################################ REDIS CLUSTER  ###############################
# cluster-enabled yes
# cluster-config-file nodes-6379.conf
# cluster-node-timeout 15000
# cluster-slave-validity-factor 10
# cluster-migration-barrier 1
# cluster-require-full-coverage yes################################## SLOW LOG ###################################
slowlog-log-slower-than 10000
slowlog-max-len 128################################ LATENCY MONITOR ##############################
latency-monitor-threshold 0############################# EVENT NOTIFICATION ##############################
notify-keyspace-events ""############################### ADVANCED CONFIG ###############################
hash-max-ziplist-entries 512
hash-max-ziplist-value 64list-max-ziplist-entries 512
list-max-ziplist-value 64set-max-intset-entries 512zset-max-ziplist-entries 128
zset-max-ziplist-value 64hll-sparse-max-bytes 3000activerehashing yesclient-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60hz 10
aof-rewrite-incremental-fsync yes
View Code

redis sentinel配置模板:?

port 20086      #默認(rèn)端口26379dir "/tmp"logfile "/var/log/redis/sentinel_20086.log"daemonize yes

#3.2設(shè)置
?
protected-mode no?
#格式:sentinel <option_name> <master_name> <option_value>;#該行的意思是:監(jiān)控的master的名字叫做T1(自定義),地址為127.0.0.1:10086,行尾最后的一個(gè)2代表在sentinel集群中,多少個(gè)sentinel認(rèn)為masters死了,才能真正認(rèn)為該master不可用了。
sentinel monitor T1 127.0.0.1 10086 2
#sentinel會(huì)向master發(fā)送心跳PING來(lái)確認(rèn)master是否存活,如果master在“一定時(shí)間范圍”內(nèi)不回應(yīng)PONG 或者是回復(fù)了一個(gè)錯(cuò)誤消息,那么這個(gè)sentinel會(huì)主觀地(單方面地)認(rèn)為這個(gè)master已經(jīng)不可用了(subjectively down, 也簡(jiǎn)稱為SDOWN)。而這個(gè)down-after-milliseconds就是用來(lái)指定這個(gè)“一定時(shí)間范圍”的,單位是毫秒,默認(rèn)30秒。
sentinel down-after-milliseconds T1 15000
#failover過(guò)期時(shí)間,當(dāng)failover開(kāi)始后,在此時(shí)間內(nèi)仍然沒(méi)有觸發(fā)任何failover操作,當(dāng)前sentinel將會(huì)認(rèn)為此次failoer失敗。默認(rèn)180秒,即3分鐘。
sentinel failover-timeout T1 120000
#在發(fā)生failover主備切換時(shí),這個(gè)選項(xiàng)指定了最多可以有多少個(gè)slave同時(shí)對(duì)新的master進(jìn)行同步,這個(gè)數(shù)字越小,完成failover所需的時(shí)間就越長(zhǎng),但是如果這個(gè)數(shù)字越大,就意味著越多的slave因?yàn)閞eplication而不可用。可以通過(guò)將這個(gè)值設(shè)為 1 來(lái)保證每次只有一個(gè)slave處于不能處理命令請(qǐng)求的狀態(tài)。
sentinel parallel-syncs T1 1
#sentinel 連接設(shè)置了密碼的主和從
#sentinel auth-pass <master_name> xxxxx
#發(fā)生切換之后執(zhí)行的一個(gè)自定義腳本:如發(fā)郵件、vip切換等
#sentinel notification-script <master-name> <script-path>
#sentinel client-reconfig-script <master-name> <script-path>

?

參考文檔:

redis配置詳解

?

轉(zhuǎn)載于:https://www.cnblogs.com/zhoujinyi/p/5565647.html

總結(jié)

以上是生活随笔為你收集整理的Redis3.0 配置文件说明的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。