溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

redis3.2中配置文件redis.conf的示例分析

發(fā)布時(shí)間:2021-07-29 11:12:16 來(lái)源:億速云 閱讀:137 作者:小新 欄目:數(shù)據(jù)庫(kù)

這篇文章主要介紹了redis3.2中配置文件redis.conf的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

Redis啟動(dòng)的時(shí)候,可以指定配置文件,如下:

/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

Redis.conf文件內(nèi)容詳細(xì)說(shuō)明

# 默認(rèn)redis不是以后臺(tái)進(jìn)程的方式啟動(dòng),如果需要在后臺(tái)運(yùn)行,需要將這個(gè)值設(shè)置成yes 
# 以后臺(tái)方式啟動(dòng)的時(shí)候,redis會(huì)寫(xiě)入默認(rèn)的進(jìn)程文件/var/run/redis.pid 
daemonize yes 
 
# redis啟動(dòng)的進(jìn)程路徑 
pidfile/var/run/redis.pid 
 
# 啟動(dòng)進(jìn)程端口號(hào),這里最好不要使用默認(rèn)的6379,容易被攻擊 
port 7179 
 
tcp-backlog 511 
 
# 配置redis監(jiān)聽(tīng)到的ip地址,可以是一個(gè)也可以多個(gè) 
bind 127.0.0.110.254.3.42 
 
# redis的sock路徑 
unixsocket/tmp/redis.sock 
unixsocketperm 755 
 
# 超時(shí)時(shí)間 
timeout 0 
 
#指定TCP連接是否為長(zhǎng)連接,"偵探"信號(hào)有server端維護(hù)。默認(rèn)為0.表示禁用 
tcp-keepalive 0 
 
# 日志級(jí)別,log 等級(jí)分為4 級(jí),debug,verbose,notice, 和warning。生產(chǎn)環(huán)境下一般開(kāi)啟notice 
loglevel notice 
 
# 日志文件地址 
logfile"/usr/local/redis/logs/redis.log" 
 
 
 
# 設(shè)置數(shù)據(jù)庫(kù)的個(gè)數(shù),可以使用SELECT 命令來(lái)切換數(shù)據(jù)庫(kù)。默認(rèn)使用的數(shù)據(jù)庫(kù)是0號(hào)庫(kù)。默認(rèn)16個(gè)庫(kù) 
databases 16 
 
#RDB方式的持久化是通過(guò)快照(snapshotting)完成的,當(dāng)符合一定條件時(shí)Redis會(huì)自動(dòng)將內(nèi)存中的所有數(shù)據(jù)進(jìn)行快照并存儲(chǔ)在硬盤(pán)上。進(jìn)行快照的條件可以由用戶在配置文件中自定義,由兩個(gè)參數(shù)構(gòu)成:時(shí)間和改動(dòng)的鍵的個(gè)數(shù)。當(dāng)在指定的時(shí)間內(nèi)被更改的鍵的個(gè)數(shù)大于指定的數(shù)值時(shí)就會(huì)進(jìn)行快照。RDB是Redis默認(rèn)采用的持久化方式,在配置文件中已經(jīng)預(yù)置了3個(gè)條件: 
save 900 1 # 900秒內(nèi)有至少1個(gè)鍵被更改則進(jìn)行快照 
save 300 10 # 300秒內(nèi)有至少10個(gè)鍵被更改則進(jìn)行快照 
save 60 10000 # 60秒內(nèi)有至少10000個(gè)鍵被更改則進(jìn)行快照 
 
# 持久化數(shù)據(jù)存儲(chǔ)目錄 
dir/usr/local/redis/data 
 
 
#當(dāng)持久化出現(xiàn)錯(cuò)誤時(shí),是否依然繼續(xù)進(jìn)行工作,是否終止所有的客戶端write請(qǐng)求。默認(rèn)設(shè)置"yes"表示終止,一旦snapshot數(shù)據(jù)保存故障,那么此server為只讀服務(wù)。如果為"no",那么此次snapshot將失敗,但下一次snapshot不會(huì)受到影響,不過(guò)如果出現(xiàn)故障,數(shù)據(jù)只能恢復(fù)到"最近一個(gè)成功點(diǎn)" 
stop-writes-on-bgsave-errorno 
 
#在進(jìn)行數(shù)據(jù)鏡像備份時(shí),是否啟用rdb文件壓縮手段,默認(rèn)為yes。壓縮可能需要額外的cpu開(kāi)支,不過(guò)這能夠有效的減小rdb文件的大,有利于存儲(chǔ)/備份/傳輸/數(shù)據(jù)恢復(fù) 
rdbcompression yes 
 
#checksum文件檢測(cè),讀取寫(xiě)入的時(shí)候rdb文件checksum,會(huì)損失一些性能 
rdbchecksum yes 
 
#鏡像備份文件的文件名,默認(rèn)為dump.rdb 
dbfilename dump.rdb 
 
#當(dāng)主master服務(wù)器掛機(jī)或主從復(fù)制在進(jìn)行時(shí),是否依然可以允許客戶訪問(wèn)可能過(guò)期的數(shù)據(jù)。在"yes"情況下,slave繼續(xù)向客戶端提供只讀服務(wù),有可能此時(shí)的數(shù)據(jù)已經(jīng)過(guò)期;在"no"情況下,任何向此server發(fā)送的數(shù)據(jù)請(qǐng)求服務(wù)(包括客戶端和此server的slave)都將被告知"error" 
slave-serve-stale-datayes 
 
# 如果是slave庫(kù),只允許只讀,不允許修改 
slave-read-only yes 
 
 
#slave與master的連接,是否禁用TCPnodelay選項(xiàng)。"yes"表示禁用,那么socket通訊中數(shù)據(jù)將會(huì)以packet方式發(fā)送(packet大小受到socket buffer限制)??梢蕴岣遱ocket通訊的效率(tcp交互次數(shù)),但是小數(shù)據(jù)將會(huì)被buffer,不會(huì)被立即發(fā)送,對(duì)于接受者可能存在延遲。"no"表示開(kāi)啟tcp nodelay選項(xiàng),任何數(shù)據(jù)都會(huì)被立即發(fā)送,及時(shí)性較好,但是效率較低,建議設(shè)為no,在高并發(fā)或者主從有大量操作的情況下,設(shè)置為yes 
repl-disable-tcp-nodelayno 
 
 
#適用Sentinel模塊(unstable,M-S集群管理和監(jiān)控),需要額外的配置文件支持。slave的權(quán)重值,默認(rèn)100.當(dāng)master失效后,Sentinel將會(huì)從slave列表中找到權(quán)重值最低(>0)的slave,并提升為master。如果權(quán)重值為0,表示此slave為"觀察者",不參與master選舉 
slave-priority 100 
 
#限制同時(shí)連接的客戶數(shù)量。當(dāng)連接數(shù)超過(guò)這個(gè)值時(shí),redis 將不再接收其他連接請(qǐng)求,客戶端嘗試連接時(shí)將收到error 信息。默認(rèn)為10000,要考慮系統(tǒng)文件描述符限制,不宜過(guò)大,浪費(fèi)文件描述符,具體多少根據(jù)具體情況而定 
maxclients 10000 
 
#redis-cache所能使用的最大內(nèi)存(bytes),默認(rèn)為0,表示"無(wú)限制",最終由OS物理內(nèi)存大小決定(如果物理內(nèi)存不足,有可能會(huì)使用swap)。此值盡量不要超過(guò)機(jī)器的物理內(nèi)存尺寸,從性能和實(shí)施的角度考慮,可以為物理內(nèi)存3/4。此配置需要和"maxmemory-policy"配合使用,當(dāng)redis中內(nèi)存數(shù)據(jù)達(dá)到maxmemory時(shí),觸發(fā)"清除策略"。在"內(nèi)存不足"時(shí),任何write操作(比如set,lpush等)都會(huì)觸發(fā)"清除策略"的執(zhí)行。在實(shí)際環(huán)境中,建議redis的所有物理機(jī)器的硬件配置保持一致(內(nèi)存一致),同時(shí)確保master/slave中"maxmemory""policy"配置一致。 
maxmemory 0 
 
 
#內(nèi)存過(guò)期策略,內(nèi)存不足"時(shí),數(shù)據(jù)清除策略,默認(rèn)為"volatile-lru"。 
#volatile-lru ->對(duì)"過(guò)期集合"中的數(shù)據(jù)采取LRU(近期最少使用)算法.如果對(duì)key使用"expire"指令指定了過(guò)期時(shí)間,那么此key將會(huì)被添加到"過(guò)期集合"中。將已經(jīng)過(guò)期/LRU的數(shù)據(jù)優(yōu)先移除.如果"過(guò)期集合"中全部移除仍不能滿足內(nèi)存需求,將OOM. 
#allkeys-lru ->對(duì)所有的數(shù)據(jù),采用LRU算法 
#volatile-random ->對(duì)"過(guò)期集合"中的數(shù)據(jù)采取"隨即選取"算法,并移除選中的K-V,直到"內(nèi)存足夠"為止. 如果如果"過(guò)期集合"中全部移除全部移除仍不能滿足,將OOM 
#allkeys-random ->對(duì)所有的數(shù)據(jù),采取"隨機(jī)選取"算法,并移除選中的K-V,直到"內(nèi)存足夠"為止 
#volatile-ttl ->對(duì)"過(guò)期集合"中的數(shù)據(jù)采取TTL算法(最小存活時(shí)間),移除即將過(guò)期的數(shù)據(jù). 
#noeviction ->不做任何干擾操作,直接返回OOM異常 
#另外,如果數(shù)據(jù)的過(guò)期不會(huì)對(duì)"應(yīng)用系統(tǒng)"帶來(lái)異常,且系統(tǒng)中write操作比較密集,建議采取"allkeys-lru" 
maxmemory-policyvolatile-lru 
 
# 默認(rèn)值5,上面LRU和最小TTL策略并非嚴(yán)謹(jǐn)?shù)牟呗?,而是大約估算的方式,因此可以選擇取樣值以便檢查 
maxmemory-samples 5 
 
#默認(rèn)情況下,redis 會(huì)在后臺(tái)異步的把數(shù)據(jù)庫(kù)鏡像備份到磁盤(pán),但是該備份是非常耗時(shí)的,而且備份也不能很頻繁。所以redis 提供了另外一種更加高效的數(shù)據(jù)庫(kù)備份及災(zāi)難恢復(fù)方式。開(kāi)啟append only 模式之后,redis 會(huì)把所接收到的每一次寫(xiě)操作請(qǐng)求都追加到appendonly.aof 文件中,當(dāng)redis 重新啟動(dòng)時(shí),會(huì)從該文件恢復(fù)出之前的狀態(tài)。但是這樣會(huì)造成appendonly.aof 文件過(guò)大,所以redis 還支持了BGREWRITEAOF 指令,對(duì)appendonly.aof 進(jìn)行重新整理。如果不經(jīng)常進(jìn)行數(shù)據(jù)遷移操作,推薦生產(chǎn)環(huán)境下的做法為關(guān)閉鏡像,開(kāi)啟appendonly.aof,同時(shí)可以選擇在訪問(wèn)較少的時(shí)間每天對(duì)appendonly.aof 進(jìn)行重寫(xiě)一次。 
#另外,對(duì)master機(jī)器,主要負(fù)責(zé)寫(xiě),建議使用AOF,對(duì)于slave,主要負(fù)責(zé)讀,挑選出1-2臺(tái)開(kāi)啟AOF,其余的建議關(guān)閉 
appendonly yes 
 
#aof文件名字,默認(rèn)為appendonly.aof 
appendfilename"appendonly.aof" 
 
# 設(shè)置對(duì)appendonly.aof 文件進(jìn)行同步的頻率。always表示每次有寫(xiě)操作都進(jìn)行同步,everysec 表示對(duì)寫(xiě)操作進(jìn)行累積,每秒同步一次。no不主動(dòng)fsync,由OS自己來(lái)完成。這個(gè)需要根據(jù)實(shí)際業(yè)務(wù)場(chǎng)景進(jìn)行配置 
appendfsync everysec 
 
# 在aof rewrite期間,是否對(duì)aof新記錄的append暫緩使用文件同步策略,主要考慮磁盤(pán)IO開(kāi)支和請(qǐng)求阻塞時(shí)間。默認(rèn)為no,表示"不暫緩",新的aof記錄仍然會(huì)被立即同步 
no-appendfsync-on-rewriteno 
 
#當(dāng)Aof log增長(zhǎng)超過(guò)指定比例時(shí),重寫(xiě)logfile,設(shè)置為0表示不自動(dòng)重寫(xiě)Aof 日志,重寫(xiě)是為了使aof體積保持最小,而確保保存最完整的數(shù)據(jù)。 
auto-aof-rewrite-percentage100 
#觸發(fā)aof rewrite的最小文件尺寸 
auto-aof-rewrite-min-size64mb 
 
#lua腳本執(zhí)行的最大時(shí)間,單位毫秒 
lua-time-limit 5000 
 
 
 
#慢日志記錄,單位微妙,10000就是10毫秒值,如果操作時(shí)間超過(guò)此值,將會(huì)把command信息"記錄"起來(lái).(內(nèi)存,非文件)。其中"操作時(shí)間"不包括網(wǎng)絡(luò)IO開(kāi)支,只包括請(qǐng)求達(dá)到server后進(jìn)行"內(nèi)存實(shí)施"的時(shí)間."0"表示記錄全部操作 
slowlog-log-slower-than10000 
 
#"慢操作日志"保留的最大條數(shù),"記錄"將會(huì)被隊(duì)列化,如果超過(guò)了此長(zhǎng)度,舊記錄將會(huì)被移除。可以通過(guò)"SLOWLOG<subcommand> args"查看慢記錄的信息(SLOWLOG get 10,SLOWLOG reset) 
slowlog-max-len 128 
notify-keyspace-events"" 
 
#hash類型的數(shù)據(jù)結(jié)構(gòu)在編碼上可以使用ziplist和hashtable。ziplist的特點(diǎn)就是文件存儲(chǔ)(以及內(nèi)存存儲(chǔ))所需的空間較小,在內(nèi)容較小時(shí),性能和hashtable幾乎一樣.因此redis對(duì)hash類型默認(rèn)采取ziplist。如果hash中條目的條目個(gè)數(shù)或者value長(zhǎng)度達(dá)到閥值,將會(huì)被重構(gòu)為hashtable。 
#這個(gè)參數(shù)指的是ziplist中允許存儲(chǔ)的最大條目個(gè)數(shù),,默認(rèn)為512,建議為128 
hash-max-ziplist-entries512 
#ziplist中允許條目value值最大字節(jié)數(shù),默認(rèn)為64,建議為1024 
hash-max-ziplist-value64 
 
#同上 
list-max-ziplist-entries512 
list-max-ziplist-value64 
 
#intset中允許保存的最大條目個(gè)數(shù),如果達(dá)到閥值,intset將會(huì)被重構(gòu)為hashtable 
set-max-intset-entries512 
 
#zset為有序集合,有2中編碼類型:ziplist,skiplist。因?yàn)?quot;排序"將會(huì)消耗額外的性能,當(dāng)zset中數(shù)據(jù)較多時(shí),將會(huì)被重構(gòu)為skiplist。 
zset-max-ziplist-entries128 
#zset中允許條目value值最大字節(jié)數(shù),默認(rèn)為64,建議為1024 
zset-max-ziplist-value64 
 
 
#是否開(kāi)啟頂層數(shù)據(jù)結(jié)構(gòu)的rehash功能,如果內(nèi)存允許,請(qǐng)開(kāi)啟。rehash能夠很大程度上提高K-V存取的效率 
activerehashing yes 
 
#客戶端buffer控制。在客戶端與server進(jìn)行的交互中,每個(gè)連接都會(huì)與一個(gè)buffer關(guān)聯(lián),此buffer用來(lái)隊(duì)列化等待被client接受的響應(yīng)信息。如果client不能及時(shí)的消費(fèi)響應(yīng)信息,那么buffer將會(huì)被不斷積壓而給server帶來(lái)內(nèi)存壓力.如果buffer中積壓的數(shù)據(jù)達(dá)到閥值,將會(huì)導(dǎo)致連接被關(guān)閉,buffer被移除。 
 
#buffer控制類型包括:normal -> 普通連接;slave->與slave之間的連接;pubsub ->pub/sub類型連接,此類型的連接,往往會(huì)產(chǎn)生此種問(wèn)題;因?yàn)閜ub端會(huì)密集的發(fā)布消息,但是sub端可能消費(fèi)不足.指令格式:client-output-buffer-limit <class> <hard><soft><seconds>",其中hard表示buffer最大值,一旦達(dá)到閥值將立即關(guān)閉連接;soft表示"容忍值",它和seconds配合,如果buffer值超過(guò)soft且持續(xù)時(shí)間達(dá)到了seconds,也將立即關(guān)閉連接,如果超過(guò)了soft但是在seconds之后,buffer數(shù)據(jù)小于了soft,連接將會(huì)被保留.其中hard和soft都設(shè)置為0,則表示禁用buffer控制.通常hard值大于soft. 
client-output-buffer-limitnormal 0 0 0 
client-output-buffer-limitslave 256mb 64mb 60 
client-output-buffer-limitpubsub 32mb 8mb 60 
 
 
#Redis server執(zhí)行后臺(tái)任務(wù)的頻率,默認(rèn)為10,此值越大表示redis對(duì)"間歇性task"的執(zhí)行次數(shù)越頻繁(次數(shù)/秒)。"間歇性task"包括"過(guò)期集合"檢測(cè)、關(guān)閉"空閑超時(shí)"的連接等,此值必須大于0且小于500。此值過(guò)小就意味著更多的cpu周期消耗,后臺(tái)task被輪詢的次數(shù)更頻繁。此值過(guò)大意味著"內(nèi)存敏感"性較差。建議采用默認(rèn)值。 
hz 10 
 
#當(dāng)一個(gè)child在重寫(xiě)AOF文件的時(shí)候,如果aof-rewrite-incremental-fsync值為yes生效,那么這個(gè)文件會(huì)以每次32M數(shù)據(jù)的來(lái)被同步,這大量新增提交到磁盤(pán)是有用的,并且能避免高峰延遲。 
aof-rewrite-incremental-fsyncyes 

#額外載入配置文件
# include /path/to/local.conf
# include /path/to/other.conf

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“redis3.2中配置文件redis.conf的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI