redis2.8配置文件中文翻譯版
更新時(shí)間:2015年06月23日 08:55:14 投稿:junjie
這篇文章主要介紹了redis2.8配置文件中文翻譯版,本文翻譯了配置文件中的參數(shù)說(shuō)明,非常詳細(xì),需要的朋友可以參考下
# Redis 配置案例 #關(guān)于單位,當(dāng)你需要指定內(nèi)存的大小時(shí),可以使用如下的單位來(lái)指定 #(譯者注,為什么會(huì)存在1000為單位,我認(rèn)為是考慮到硬盤(pán)的容量單位是以1000來(lái)進(jìn)行計(jì)算而非程序中的1024) #(因此 使用 1000為單位可以進(jìn)一步地精確估算出所需的實(shí)際硬盤(pán)容量) # # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 bytes # 1mb => 1024*1024 bytes # 1g => 1000000000 bytes # 1gb => 1024*1024*1024 bytes # # 單位是大小寫(xiě)不敏感的 所以 1GB 1Gb 1gB 是一樣的 ################################## INCLUDES ################################### # #如果你擁有一個(gè)標(biāo)準(zhǔn)的配置模板,并且希望在該模板之上坐一些個(gè)性化的修改,你可以 #使用include 指令來(lái)引入其他的配置文件。 # #注意:"include" 不會(huì)被 admin 或者 Redis Sentinel "CONFIG REWRITE" 命令覆蓋。 #(譯者注:"CONFIG REWRITE" 是redis 2.8 引入的新命令,用來(lái)重寫(xiě)配置) #由于redis以最終的配置作為實(shí)際配置,因此我們希望你將include命令放置在配置文件的最前面 #以防配置被覆蓋 #如果你打算使用另外的 conf文件來(lái)覆蓋當(dāng)前文件的配置,那么最好將include指令放置到該文件的末尾 # # 即最后生效原則,最后被解析的配置將作為最后的配置 # # include /path/to/local.conf # include /path/to/other.conf ################################ GENERAL ##################################### # redis 默認(rèn)不是以一個(gè)守護(hù)進(jìn)程來(lái)運(yùn)行的,使用 yes,可以讓redis作為守護(hù)進(jìn)程來(lái)運(yùn)行 # 注意:當(dāng)redis作為守護(hù)進(jìn)程的時(shí)候 /var/run/redis.pid 作為 pid 文件 # daemonize no # 當(dāng)redis以守護(hù)進(jìn)程運(yùn)行時(shí),將會(huì)使用/var/run/redis.pid作為 pid文件的位置,也就是 #上一個(gè)指令所說(shuō)的默認(rèn),你可以根據(jù)自己的需要修改它 # pidfile /var/run/redis.pid # 在指定的端口上進(jìn)行監(jiān)聽(tīng),默認(rèn)是 6379 # 如果端口設(shè)置為0,那么redis就不會(huì)在TCP socket上進(jìn)行監(jiān)聽(tīng) # (譯者注:不在tcp socket上進(jìn)行監(jiān)聽(tīng),不代表沒(méi)法連接,只是無(wú)法使用網(wǎng)絡(luò)連接而已) port 6379 # TCP listen() backlog值 #(譯者注:backlog值是指目前最大的連接隊(duì)列,因?yàn)門(mén)CP連接是三次握手) #(沒(méi)有完成三次握手和尚未被accept的connect都會(huì)處于連接隊(duì)列中,但是backlog的實(shí)際值與操作系統(tǒng)相關(guān)) #(并非設(shè)置多少就是多少,只能說(shuō)調(diào)整得大一些可以在同一時(shí)間應(yīng)對(duì)更多的連接請(qǐng)求) # #在一個(gè)并發(fā)量高的環(huán)境中,你需要指定一個(gè)比較大的backlog值來(lái)避免慢連接(由于網(wǎng)絡(luò)原因握手速度慢)的情況 #注意,linux內(nèi)核會(huì)默認(rèn) 使用/proc/sys/net/core/somaxconn 的值來(lái)削減 backlog的實(shí)際值, #因此你需要確保提升 somaxconn 和 tcp_max_syn_backlog 這兩個(gè)值來(lái)確保此處的backlog生效 #(譯者注:只有 當(dāng)每一個(gè)請(qǐng)求都重新發(fā)起一個(gè)連接的時(shí)候,backlog值的增大才能影響到并發(fā)量) #(在tcp穩(wěn)定連接的時(shí)候,或連接復(fù)用(連接池的使用),backlog值對(duì)并發(fā)沒(méi)有任何影響) # tcp-backlog 511 # #默認(rèn)情況下redis會(huì)在所有的可用網(wǎng)絡(luò)接口中進(jìn)行監(jiān)聽(tīng),如果你想讓redis在指定的網(wǎng)絡(luò)接口中 #監(jiān)聽(tīng),那么可以使用bind 命令來(lái)指定redis的監(jiān)聽(tīng)接口 #(譯者科普:網(wǎng)絡(luò)的中的服務(wù)是通過(guò) ip+進(jìn)程 來(lái)進(jìn)行區(qū)分的,當(dāng)一個(gè)服務(wù)器擁有兩個(gè)ip時(shí) ) #(自然就在網(wǎng)絡(luò)中擁有兩個(gè)人身份,如 內(nèi)網(wǎng),外網(wǎng),當(dāng)你只想讓redis在一個(gè)網(wǎng)絡(luò)上監(jiān)聽(tīng)時(shí),就可以使用如下的配置) # (127.0.0.1 就是指定只能本機(jī)進(jìn)行網(wǎng)絡(luò)訪問(wèn)) # 例如: # # bind 192.168.1.100 10.0.0.1 # bind 127.0.0.1 # #指定unix sock的路徑來(lái)進(jìn)行連接監(jiān)聽(tīng),默認(rèn)是不指定,因此redis不會(huì)在unix socket上進(jìn)行監(jiān)聽(tīng) #(譯者注:這個(gè)是用來(lái)進(jìn)行進(jìn)程間通信的時(shí)候指定的) # unixsocket /tmp/redis.sock # unixsocketperm 755 # 關(guān)閉掉空閑N秒的連接(0則是不處理空閑連接) timeout 0 # TCP keepalive. # # #如果該值不為0,將使用 SO_KEEPALIVE 這一默認(rèn)的做法來(lái)向客戶(hù)端連接發(fā)送TCP ACKs # #這樣的好處有以下兩個(gè)原因 # 1)檢測(cè)已經(jīng)死亡的對(duì)端(譯者注:TCP的關(guān)閉會(huì)存在無(wú)法完成4次握手的情況,如斷電,斷網(wǎng),數(shù)據(jù)丟失等等) # 2)保持連接在網(wǎng)絡(luò)環(huán)境中的存活 # # tcp-keepalive 0 # 指定日志的記錄級(jí)別的 # 可以是如下的幾個(gè)值之一 # debug (盡可能多的日志信息,用于開(kāi)發(fā)和測(cè)試之中) # verbose (少但是有用的信息, 沒(méi)有debug級(jí)別那么混亂) # notice (適量的信息,用于生產(chǎn)環(huán)境) # warning (只有非常重要和關(guān)鍵的信息會(huì)被記錄) loglevel notice # 指定日志文件的位置. 為空時(shí)將輸出到標(biāo)準(zhǔn)輸出設(shè)備 # 如果你在demo模式下使用標(biāo)準(zhǔn)輸出的日志,日志將會(huì)輸出到 /dev/null logfile "" # 當(dāng)設(shè)置 'syslog-enabled'為 yes時(shí), 允許記錄日志到系統(tǒng)日志中。 # 以及你可以使用更多的日志參數(shù)來(lái)滿(mǎn)足你的要求 # syslog-enabled no # 指定在系統(tǒng)日志中的身份 # syslog-ident redis # 指定系統(tǒng)日志的能力. 必須是 LOCAL0 到 LOCAL7 之間(閉區(qū)間). # syslog-facility local0 #設(shè)置數(shù)據(jù)庫(kù)的編號(hào). 默認(rèn)的數(shù)據(jù)庫(kù)是DB 0 #使得你可以在每一個(gè)連接的基礎(chǔ)之上使用 SELECT <dbid> 來(lái)指定另外的數(shù)據(jù)庫(kù),但是這個(gè)值必須在 0到 'database'-1之間 databases 16 ################################ SNAPSHOTTING ################################ # # 保存 DB 到硬盤(pán): # # save <seconds> <changes> # # 將會(huì)在<seconds> 和 <changes>兩個(gè)值同時(shí)滿(mǎn)足時(shí),將DB數(shù)據(jù)保存到硬盤(pán)中 # 其中<seconds> 每多少秒,<changes>是改變的key的數(shù)量 # # 在以下的例子中,將會(huì)存在如下的行為 # 當(dāng)存在最少一個(gè)key 變更時(shí),900秒(15分鐘)后保存到硬盤(pán) # 當(dāng)存在最少10個(gè)key變更時(shí),300秒后保存到硬盤(pán) # 當(dāng)存在最少1000個(gè)key變更時(shí),60秒后保存到硬盤(pán) # # 提示: 你可以禁用如下的所有 save 行 # # 你可以刪除所有的save然后設(shè)置成如下這樣的情況 # # # # save "" save 900 1 save 300 10 save 60 10000 # # 作為默認(rèn),redis會(huì)在RDB快照開(kāi)啟和最近后臺(tái)保存失敗的時(shí)候停止接受寫(xiě)入(最少一個(gè)保存點(diǎn)) #這會(huì)使得用戶(hù)察覺(jué)(通常比較困難)到數(shù)據(jù)不會(huì)保持在硬盤(pán)上的正確性,否則很難發(fā)現(xiàn) #這些災(zāi)難會(huì)發(fā)生 # # 如果后臺(tái)保存程序再次開(kāi)始工作,reidis會(huì)再次自動(dòng)允許寫(xiě)入 # #然而如果對(duì)redis服務(wù)器設(shè)置了合理持續(xù)的監(jiān)控,那么你可以關(guān)閉掉這個(gè)選項(xiàng)。 #這會(huì)導(dǎo)致redis將繼續(xù)進(jìn)行工作,無(wú)論硬盤(pán),權(quán)限或者其他的是否有問(wèn)題 # # stop-writes-on-bgsave-error yes # 是否在dump到 rdb 數(shù)據(jù)庫(kù)的時(shí)候使用LZF來(lái)壓縮字符串 # 默認(rèn)是 yes,因?yàn)檫@是一個(gè)優(yōu)良的做法 # # 如果你不想耗費(fèi)你的CPU處理能力,你可以設(shè)置為 no,但是這會(huì)導(dǎo)致你的數(shù)據(jù)會(huì)很大 rdbcompression yes # 從RDB的版本5開(kāi)始,CRC64校驗(yàn)值會(huì)寫(xiě)入到文件的末尾 #這會(huì)使得格式化過(guò)程中,使得文件的完整性更有保障,但是這會(huì)在保存和加載的時(shí)候損失不少的性能(大概在10%) #你可以關(guān)閉這個(gè)功能來(lái)獲得最高的性能 # #RDB文件會(huì)在校驗(yàn)功能關(guān)閉的時(shí)候,使用0來(lái)作為校驗(yàn)值,這將告訴加載代碼來(lái)跳過(guò)校驗(yàn)步驟 rdbchecksum yes # DB的文件名稱(chēng) dbfilename dump.rdb # 工作目錄. # # DB將會(huì)使用上述 'dbfilename'指定的文件名寫(xiě)入到該目錄中 # # 追加的文件也會(huì)在該目錄中創(chuàng)建 # # 注意,你應(yīng)該在這里輸入的是一個(gè)目錄而不是一個(gè)文件名 dir ./ ################################# REPLICATION ################################# # 主從復(fù)制。使用 slaveof 命令來(lái) 指導(dǎo)redis從另一個(gè)redis服務(wù)的拷貝中來(lái)創(chuàng)建一個(gè)實(shí)例 # #注意:這個(gè)配置是主從結(jié)構(gòu)的從(主從結(jié)構(gòu)的從,怎么那么拗口呢)redis的本地配置 # #如下例子,這個(gè)配置指導(dǎo) slave (從redis) 通過(guò)另一個(gè)redis的實(shí)例的ip和端口號(hào)來(lái)獲取DB數(shù)據(jù) # # # # slaveof <masterip> <masterport> # # 如果主服務(wù)器開(kāi)啟了密碼保護(hù)(使用下面的"requirepass"配置) # 這個(gè)配置就是告訴從服務(wù)在發(fā)起向主服務(wù)器的異步復(fù)制的請(qǐng)求之前使用如下的密碼進(jìn)行認(rèn)證, #否則主服務(wù)器會(huì)拒絕這個(gè)請(qǐng)求 # # # # masterauth <master-password> # # 如果從服務(wù)器失去了和主服務(wù)器之間的連接,或者當(dāng)復(fù)制仍然處于處理狀態(tài)的時(shí)候 # 從服務(wù)器做出如下的兩個(gè)行為 # # 1)如果 slave-serve-stale-data 被設(shè)置為 yes(默認(rèn)值),從服務(wù)器將會(huì)持續(xù) # 回復(fù)來(lái)自客戶(hù)端的請(qǐng)求,可能會(huì)回復(fù)已經(jīng)過(guò)期的數(shù)據(jù),或者返回空的數(shù)據(jù),當(dāng)從服務(wù)器第一次異步請(qǐng)求數(shù)據(jù)時(shí)。 # # 2)如果 slave-serve-stale-data 被設(shè)置為 no ,從服務(wù)器就會(huì)返回"SYNC with master in progress" # 這個(gè)錯(cuò)誤,來(lái)應(yīng)答所有命令除了 INFO 和 SLAVEOF # slave-serve-stale-data yes # # # 你可以配置一個(gè)從服務(wù)器的實(shí)例是否接受寫(xiě)請(qǐng)求, # 從服務(wù)器在存儲(chǔ)一些短暫的數(shù)據(jù)的的時(shí)候,接收寫(xiě)請(qǐng)求是一件非常正確的事情 # (因?yàn)閿?shù)據(jù)在向主服務(wù)器同步之后非常容易擦除)但是會(huì)因?yàn)榕渲貌徽_而導(dǎo)致一些問(wèn)題 # # 從redis 2.6開(kāi)始默認(rèn)從服務(wù)器是只讀的服務(wù)器 # # # #提示:只讀的從服務(wù)器并不是設(shè)計(jì)用來(lái)公開(kāi)給不受信任的互聯(lián)網(wǎng)客戶(hù)端的,它 #僅僅是一個(gè)用來(lái)防止對(duì)實(shí)例進(jìn)行誤操作的保護(hù)層。只讀從服務(wù)器默認(rèn)用來(lái)輸出管理命令 #例如 CONFIG, DEBUG 和其他。如果你想限制它的規(guī)模,你可以使用'rename-command'來(lái) #提高它的安全性,使得她作為一個(gè)影子來(lái)執(zhí)行管理或者危險(xiǎn)的命令 # # slave-read-only yes # 從服務(wù)器在預(yù)設(shè)的間隔中發(fā)送送一個(gè)ping到目標(biāo)服務(wù)器。你可以通過(guò)修改repl-ping-slave-period #的值來(lái)修改它,默認(rèn)是10秒鐘 # # # repl-ping-slave-period 10 # repl-timeout設(shè)置了以下的復(fù)制超時(shí)值: # # 1) 在從服務(wù)器中,使用同步IO進(jìn)行大規(guī)模傳輸. # 2) 在從服務(wù)器中,主服務(wù)器的超時(shí)(ping,數(shù)據(jù)) # 3) 在主服務(wù)器中. 從服務(wù)器的超時(shí)(對(duì)pings的響應(yīng)) # # # 確保這個(gè)值大于 指定的repl-ping-slave-period 值,否則當(dāng)主從之間是低流量時(shí) # 會(huì)檢測(cè)到超時(shí)的情況 # # repl-timeout 60 # 在從服務(wù)器同步之后是否關(guān)閉TCP_NODELAY? # # # 如果你選擇 "yes",redis將會(huì)使用一個(gè)很小的TCP包和很小的帶寬來(lái)向從服務(wù)器發(fā)送數(shù)據(jù)。 # 如果使用默認(rèn)的設(shè)置這會(huì)增加數(shù)據(jù)復(fù)制到從服務(wù)器之間的延遲。如果使用默認(rèn)配置的linux內(nèi)核 # 這個(gè)延遲會(huì)高達(dá)到40毫秒 # # #如果你選擇 "no",數(shù)據(jù)復(fù)制到從服務(wù)器將會(huì)減少延遲,但是會(huì)使用更多的帶寬。 # #作為默認(rèn)我們?yōu)榈脱舆t進(jìn)行優(yōu)化,但是在一個(gè)高流量的情況下或者當(dāng)主服務(wù)器和從服務(wù)器 #有很多hops的時(shí)候,將該值設(shè)置為yes會(huì)更好 # (譯者注:這就是一個(gè)網(wǎng)絡(luò)調(diào)優(yōu)的問(wèn)題,默認(rèn)的TCP內(nèi)核會(huì)使用Nagle,即將小的數(shù)據(jù)包合并成大的數(shù)據(jù)包(及yes的情況)) # (在等待合并的過(guò)程種,肯定會(huì)存在等待后續(xù)數(shù)據(jù)的步驟,因此這會(huì)導(dǎo)致數(shù)據(jù)的延遲) # (yes,就是使用TCP的默認(rèn)情況開(kāi)啟Nagle算法,no就是關(guān)閉Nagle算法) repl-disable-tcp-nodelay no # # #設(shè)置復(fù)制的backlog值。(這個(gè)backlog和tcp中的backlog不一樣) # #這個(gè)backlog值是一個(gè)緩沖區(qū),當(dāng)從服務(wù)器斷開(kāi)連接之后,主服務(wù)器將更新的數(shù)據(jù)放置 #在這個(gè)緩沖區(qū)中,因?yàn)楫?dāng)從服務(wù)重新連接上來(lái)時(shí)候不是所有的數(shù)據(jù)都需要同步,因此從這個(gè) #緩沖區(qū)中取數(shù)據(jù)就可以同步到和主服務(wù)器一樣的狀態(tài) # # #這個(gè)值設(shè)置得越大,從服務(wù)器的掉線(xiàn)時(shí)間就可以越長(zhǎng),上線(xiàn)后就可以進(jìn)行局部更新 #(譯者注:當(dāng)?shù)艟€(xiàn)時(shí)間過(guò)長(zhǎng)而無(wú)法進(jìn)行局部更新,那么從服務(wù)器就會(huì)再一次進(jìn)行同步所有的數(shù)據(jù),耗時(shí)和當(dāng)時(shí)的數(shù)據(jù)量成正比) #當(dāng)且僅當(dāng)?shù)谝粋€(gè)從服務(wù)器連接到服務(wù)器之后這個(gè)緩存才會(huì)被分配 # # repl-backlog-size 1mb # # # 當(dāng)從服務(wù)器在長(zhǎng)時(shí)間內(nèi)沒(méi)有連接到主服務(wù)器時(shí),backlog的緩存將會(huì)被釋放。 # 以下的選項(xiàng)就是自 從服務(wù)器最后一次斷掉和主服務(wù)器之間的 # 連接開(kāi)始N秒后清空backlog的緩存 # # 設(shè)置為0意味著永遠(yuǎn)不會(huì)清空backlog # # repl-backlog-ttl 3600 # # # 在redis的信息輸出中我們使用一個(gè)整型值來(lái)表示從服務(wù)器的優(yōu)先值 # #這個(gè)優(yōu)先級(jí)的作用是,在主從結(jié)構(gòu)種,當(dāng)主服務(wù)器不能正常工作的時(shí)候時(shí)候, #將一個(gè)從服務(wù)器提升為主服務(wù)器,提升的依據(jù)就是這個(gè)值。 # # 假設(shè)又三個(gè) 優(yōu)先級(jí)分別為 25 10 100 的服務(wù)器,將優(yōu)先將數(shù)值最少的提升為主服務(wù)器 # 即最小值優(yōu)先 # 如果優(yōu)先級(jí)設(shè)置為0,意味著將不會(huì)又機(jī)會(huì)成為主服務(wù)器 # 默認(rèn)優(yōu)先級(jí)是100 slave-priority 100 # # 下面的值用來(lái)設(shè)置主服務(wù)器停止接受寫(xiě)入事件的情況。 # 如果從服務(wù)器的連接小于N # 從服務(wù)器的數(shù)據(jù)落后 小于等于M秒 # # N個(gè)從服務(wù)器必須是在線(xiàn)的狀態(tài) # # lag的單位是秒,它必須 <=指定的值,它從最后一次收到ping包的時(shí)間開(kāi)始計(jì)算。 # 通常ping包都是每秒發(fā)送一次 # # # 這個(gè)選項(xiàng)并不擔(dān)保N個(gè)副本都會(huì)接受寫(xiě)入,但是會(huì)確保在指定的時(shí)間沒(méi)有足夠的從服務(wù)可用的時(shí)候 # 窗口上顯示丟失寫(xiě)入 # # # 例如要求最少三個(gè)從服務(wù)器在lag<=10秒 # # min-slaves-to-write 3 # min-slaves-max-lag 10 # # 設(shè)置任意一個(gè)為0都會(huì)導(dǎo)致關(guān)閉這項(xiàng)特性 # # 默認(rèn)min-slaves-to-write 設(shè)置為0(關(guān)閉這個(gè)特性) # min-slaves-max-lag 設(shè)置為10 ################################## SECURITY ################################### # # 要求客戶(hù)端在處理其他指令之前先發(fā)起AUTH <PASSWORD> # # 這在你不信任其他的接入主機(jī)上的redis-server是比較有用 # # 這個(gè)選項(xiàng)應(yīng)當(dāng)注釋掉來(lái)保證向后的兼容性,畢竟大部分的人都不需要鑒權(quán)驗(yàn)證(因?yàn)樗麄兌歼\(yùn)行自己的sever) # # #注意,由于redis太快,所以每秒鐘可以嘗試150K次密碼,因此你應(yīng)該設(shè)置一個(gè) #非常強(qiáng)壯的密碼來(lái)防止別人的破解 # # requirepass foobared # 命令重命名. # # # 它用來(lái)改變共享環(huán)境中危險(xiǎn)命令的名字,在這個(gè)例子中 # CONFIG 命令被重命名為一個(gè)難以猜解的名字。 # 這會(huì)對(duì)內(nèi)部用戶(hù)的工具有效,但是對(duì)一般的客戶(hù)端無(wú)效。 # # Example: # # rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 # # # 可以使用一個(gè)空字符串來(lái)抹殺這個(gè)命令 # # rename-command CONFIG "" # # 請(qǐng)注意,改變記錄在AOF文件中的命令名稱(chēng)或者傳輸?shù)綇姆?wù)會(huì)導(dǎo)致問(wèn)題 # AOF file or transmitted to slaves may cause problems. ################################### LIMITS #################################### # # 設(shè)置同一時(shí)間的客戶(hù)端最大連接數(shù),默認(rèn)的限制是10000個(gè)客戶(hù)端。 #然而如果redis服務(wù)不設(shè)置這個(gè)限制值那么最大的用戶(hù)數(shù)就是最大文件描述符數(shù)-32. # # #一旦連接的用戶(hù)數(shù)超出了限制值,redis將會(huì)關(guān)閉新的連接并且發(fā)送 'max number of client reached' # # maxclients 10000 # 不使用超出指定大小的內(nèi)存, #當(dāng)redis使用到的內(nèi)存達(dá)到限定值的時(shí)候,將會(huì)根據(jù)淘汰策略試圖移除一部分key # # # 如果根據(jù)相關(guān)策略無(wú)法移除key,或者策略被設(shè)置為 'noeviction',redis將會(huì)對(duì) #使用到內(nèi)存的命令返回錯(cuò)誤,比如 SET LPUSH等,并且進(jìn)入只讀模式僅僅響應(yīng)只讀的命令如GET # # 這個(gè)選項(xiàng)在你將redis當(dāng)做一個(gè)LRU緩存和設(shè)置一個(gè)內(nèi)存大小限制的時(shí)候十分有用。 # # # # 警告:如果你的從服務(wù)器關(guān)聯(lián)到一個(gè)有最大內(nèi)存限制的redis實(shí)例上, # # 主服務(wù)器向從服務(wù)器輸出的緩存屬于被該服務(wù)器使用的內(nèi)存的一部分。 #因此 網(wǎng)絡(luò)問(wèn)題和重新同步引發(fā)的復(fù)制,不會(huì)觸發(fā)淘汰key的循環(huán), # #反過(guò)來(lái),從服務(wù)器的輸出緩存將會(huì)被觸發(fā)淘汰的DEL key,直到數(shù)據(jù)庫(kù)清空 # # # #簡(jiǎn)單來(lái)說(shuō),如果你擁有一個(gè)從服務(wù)器,我們建議你將這個(gè)值 #設(shè)置為少于系統(tǒng)可用的最大內(nèi)存,以便系統(tǒng)可以騰出空間來(lái)安放 #從服務(wù)器的輸出緩存(但是如果策略是noeviction 那就沒(méi)這個(gè)必要) # # maxmemory <bytes> # 最大內(nèi)存策略: 當(dāng)redis使用的內(nèi)存達(dá)到指定的最大值時(shí),你可以使用如下的5種 # 策略來(lái)應(yīng)對(duì)這種情況 # # volatile-lru -> 使用LRU算法依據(jù)過(guò)期時(shí)間來(lái)移除key # allkeys-lru -> 使用LRU算法來(lái)移除任何key # volatile-random -> 根據(jù)過(guò)期時(shí)間設(shè)置隨即移除key # allkeys-random -> 隨即移除任何一個(gè)key # volatile-ttl -> 移除一個(gè)最近過(guò)期時(shí)間的key # noeviction -> 所有key用不過(guò)期(即不移除任何key),對(duì)于任何寫(xiě)操作都返回一個(gè)錯(cuò)誤信息 # # 提示: 在以上的所有策略中,當(dāng)不存在一個(gè)key滿(mǎn)足以上的淘汰策略時(shí)(即無(wú)法空出內(nèi)存時(shí)) # 任何寫(xiě)操作都會(huì)返回錯(cuò)誤信息 # # 目前為止具有寫(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 # # 默認(rèn)值為: # # maxmemory-policy volatile-lru # # LRU和最小TTL算法都不是精確的算法,但是是近似的算法, #因此你可以選擇一些樣本大小來(lái)進(jìn)行測(cè)試,對(duì)于一個(gè)默認(rèn)的redis實(shí)例 #將會(huì)選選擇3個(gè)key,并且挑選其中之一作為最近最少的Key,你可以使用如下參數(shù)修改例子的數(shù)量大小 # # # maxmemory-samples 3 ############################## APPEND ONLY MODE ############################### # Redis默認(rèn)使用異步存儲(chǔ)數(shù)據(jù)到硬盤(pán)上. # # 這個(gè)模式非常合適一些應(yīng)用,但是當(dāng)redis的進(jìn)程出現(xiàn)問(wèn)題 # 或者停電的時(shí)候,會(huì)丟失一些寫(xiě)入的數(shù)據(jù)(丟失的多少根據(jù)保存點(diǎn)的設(shè)置) # # # Append Only 文件(Append Only file),是一個(gè)備選的持久化模型, # 它提供了更好的續(xù)航能力,對(duì)于一個(gè)使用默認(rèn)數(shù)據(jù)同步文件策略的實(shí)例 #redis可能會(huì)因?yàn)橐粋€(gè)戲劇性的災(zāi)難比如停電等丟失一秒鐘的數(shù)據(jù) # #或者由于redis進(jìn)程本身的錯(cuò)誤僅僅寫(xiě)入一個(gè)數(shù)據(jù),但操作系統(tǒng)一直運(yùn)行 # # # # AOF和RDB可以毫無(wú)問(wèn)題地共存,因此你可以同時(shí)開(kāi)啟他們, # # 如果你開(kāi)啟了AOF,redis會(huì)在啟動(dòng)時(shí)加載AOF,因?yàn)锳OF有更好的魯棒性 # # 你可以從 http://redis.io/topics/persistence 獲取更多的信息 appendonly no # append only file 的名稱(chēng) (默認(rèn)是: "appendonly.aof") appendfilename "appendonly.aof" # fsync() 調(diào)用告訴操作系統(tǒng)立即將數(shù)據(jù)寫(xiě)入到硬盤(pán)中,而不是寫(xiě)入到輸出緩沖區(qū) # 等待足夠的數(shù)據(jù)再寫(xiě)入。一些操作系統(tǒng)會(huì)立即將數(shù)據(jù)寫(xiě)入到硬盤(pán)中,一些其他的 #操作系統(tǒng)則只是盡可能快地將數(shù)據(jù)寫(xiě)入硬盤(pán)中 # # # Redis支持三種不同的模式: # # no:不進(jìn)行強(qiáng)制同步,僅僅讓操作系統(tǒng)根據(jù)自身的決策寫(xiě)入到硬盤(pán)中。這種速度更快 # always:在每一次追加寫(xiě)入操作都采用強(qiáng)制同步,特點(diǎn)是慢,安全。 # everysec:每間隔一秒鐘強(qiáng)制同步數(shù)據(jù)。折中的方案 # # # 默認(rèn)采用 "everysec"作為速度和安全性之間的平衡方案 # 你將根據(jù)自己的需求決定采用更快的方案或者更安全的方案。 # 選擇no,何時(shí)寫(xiě)入數(shù)據(jù)將由操作系統(tǒng)決定,你可以由此獲取最快的速度 # 選擇always,數(shù)據(jù)將立即寫(xiě)入到硬盤(pán)中,你可以獲得更高的數(shù)據(jù)安全性 # # 更多的信息可以從以下地址中獲取: # http://antirez.com/post/redis-persistence-demystified.html # # 如果不開(kāi)啟該選項(xiàng)默認(rèn)使用"everysec". # appendfsync always appendfsync everysec # appendfsync no # # # 當(dāng)AOF的強(qiáng)制寫(xiě)入策略設(shè)置為 always 或者 everysec,并且一個(gè)后臺(tái)保存進(jìn)程 #(一個(gè)后臺(tái)保存進(jìn)程或者 AOF 日志后臺(tái)重寫(xiě))會(huì)占用硬盤(pán)的大量I/O資源,在一些linux # 的配置中redis會(huì)因?yàn)?fsync() 調(diào)用而長(zhǎng)期鎖定。特別的是在目前我們沒(méi)法解決這個(gè)問(wèn)題 # 即使采用另外的線(xiàn)程來(lái)運(yùn)行強(qiáng)制同步也會(huì)鎖定住我們的 同步 write(2)調(diào)用 # # 為了減輕這個(gè)問(wèn)題,下面的選項(xiàng)將會(huì)在GBSAVE 或者BGREWRITEAOF運(yùn)行時(shí) # 預(yù)防主進(jìn)程調(diào)用fsync() # # 這意味著當(dāng)另一個(gè) 子進(jìn)程在保存的時(shí)候,Redis的保存策略將處于"appendfsync none"這樣的類(lèi)似狀態(tài) # 在實(shí)際應(yīng)用當(dāng)中,這意味著在最壞的情況下將會(huì)失去30秒的日志(使用linux默認(rèn)的設(shè)置) # # # 如果你采用yes,那么將會(huì)存在一個(gè)潛在的隱患,不然請(qǐng)?jiān)O(shè)置它為 "no", # 這是一個(gè)為了穩(wěn)定的安全性選擇 # no-appendfsync-on-rewrite no # 自動(dòng)改寫(xiě)append only 文件. # # redis會(huì)在AOF日志文件增長(zhǎng)到指定百分比的時(shí)候通過(guò)調(diào)用BGREWRITEAOF來(lái)自動(dòng)重寫(xiě)日志文件 # # 他是這樣工作的:redis會(huì)記住最后一次改寫(xiě)后AOF文件的大小(如果重寫(xiě)自重啟以來(lái) #尚未發(fā)生,那么AOF文件的大小就是啟動(dòng)以來(lái)使用的大小) # # # 這個(gè)基準(zhǔn)值將會(huì)和當(dāng)前值進(jìn)行比較,如果當(dāng)前值比設(shè)定的百分比還要大,重寫(xiě)事件就會(huì)發(fā)生。 # # 并且你需要指定一個(gè)AOF重寫(xiě)的最小值,這用來(lái)避免當(dāng)重寫(xiě)文件的百分比增長(zhǎng)符合目標(biāo) # 但是整個(gè)文件依然很小的時(shí)候 # # # 將 auto-aof-rewrite-percentage 設(shè)置為0則可以關(guān)閉掉AOF自動(dòng)重寫(xiě)的功能 # auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb ################################ LUA SCRIPTING ############################### # 以毫秒為單位限定lua腳本的最大執(zhí)行時(shí)間. # # # 當(dāng)lua腳本在超出最大允許執(zhí)行時(shí)間之后,redis會(huì)記錄下這個(gè)腳本到日志中, #并且會(huì)向這個(gè)請(qǐng)求返回error的錯(cuò)誤 # # # # 僅當(dāng) SCRIPT KILL 和 SHUTDOWN NOSAVE 命令可用的時(shí)候 # 一個(gè)運(yùn)行時(shí)間超過(guò)最大限定時(shí)間的腳本才會(huì)繼續(xù)執(zhí)行 # SCRIPT KILL用來(lái)停止一個(gè)沒(méi)有調(diào)用寫(xiě)入命令的腳本 # 當(dāng)用戶(hù)不想等待腳本的自然中止但腳本又在進(jìn)行寫(xiě)操作的時(shí)候 # 采用 SHUTDOWN NOSAVE 是解決這個(gè)問(wèn)題的唯一辦法,他可以立即停掉整個(gè)腳本 # # # 設(shè)置為0 或者一個(gè)負(fù)數(shù)來(lái)取消時(shí)間限定. lua-time-limit 5000 ################################## SLOW LOG ################################### # # slow log(慢日志)用來(lái)記錄執(zhí)行時(shí)間超過(guò)指定值的查詢(xún)。 # 執(zhí)行時(shí)間不包含 I/O操作,比如和客戶(hù)端交互,發(fā)送應(yīng)答等等 # 僅僅是執(zhí)行命令的真實(shí)時(shí)間,(僅僅是線(xiàn)程因?yàn)閳?zhí)行這個(gè)命令而鎖定且無(wú)法處理其他請(qǐng)求的階段) # # # 你可以使用兩個(gè)參數(shù)來(lái)配置 slow log,一個(gè)是以微秒為單位的命令執(zhí)行時(shí)間值, # 另一個(gè)是slow log 的長(zhǎng)度(即記錄的最大數(shù)量) # 當(dāng)一個(gè)新的命令被記錄到slow log的時(shí)候,最舊的一條記錄將會(huì)被移除。 # # # 下面的值將會(huì)被解釋為 微秒 為單位,所以 1000000 微秒為 1秒 # # 將這個(gè)值設(shè)置為一個(gè)負(fù)數(shù),將關(guān)閉掉slow log ,如果設(shè)置為0,則記錄所有的命令 #(默認(rèn)是10毫秒) slowlog-log-slower-than 10000 # 因?yàn)檫@會(huì)消耗內(nèi)存,因此實(shí)際上并不是限制到這個(gè)長(zhǎng)度. # 你可以使用 SLOWLOG RESET來(lái)回收占用的內(nèi)存 slowlog-max-len 128 ################################ LATENCY MONITOR ############################## # # redis延遲監(jiān)控子系統(tǒng)例子與操作系統(tǒng)收集的redis實(shí)例相關(guān)的數(shù)據(jù)不同 # # 通過(guò)LATENCY命令,可以為用戶(hù)打印出相關(guān)信息的圖形和報(bào)告 # #這個(gè)系統(tǒng)只會(huì)記錄運(yùn)行時(shí)間超出指定時(shí)間值的命令,如果設(shè)置為0,這個(gè)監(jiān)控將會(huì)被關(guān)閉 # # # 默認(rèn)的情況下,延遲監(jiān)控是關(guān)閉,因?yàn)槿绻銢](méi)有延遲的問(wèn)題大部分情況下不需要 #,并且收集數(shù)據(jù)的行為會(huì)對(duì)性能造成影響,雖然這個(gè)影響很小可以在大負(fù)荷下工作 # #延遲監(jiān)控可以使用如下命令來(lái)打開(kāi) # # "CONFIG SET latency-monitor-threshold <milliseconds>". latency-monitor-threshold 0 ############################# Event notification ############################## #redis 可以在key 空間中采用發(fā)布訂閱模式來(lái)通知事件的發(fā)生 # #這個(gè)功能的文檔可以查看 http://redis.io/topics/keyspace-events # # #對(duì)于一個(gè)實(shí)例,如果鍵空間事件通知是啟用狀態(tài),當(dāng)一個(gè)客戶(hù)端執(zhí)行在一個(gè) #存儲(chǔ)在Database 0名為"foo"的key的DEL(刪除)操作時(shí), #有如下兩條信息將會(huì)通過(guò)發(fā)布訂閱系統(tǒng)產(chǎn)生 # # # PUBLISH __keyspace@0__:foo del # PUBLISH __keyevent@0__:del foo # # # 以下是可選的redis事件通知,每個(gè)類(lèi)別的事件可以由一個(gè)字符進(jìn)行描述 # # K Keyspace events, published with __keyspace@<db>__ prefix. # E Keyevent events, published with __keyevent@<db>__ prefix. # g Generic commands (non-type specific) like DEL, EXPIRE, RENAME, ... # $ String commands # l List commands # s Set commands # h Hash commands # z Sorted set commands # x Expired events (events generated every time a key expires) # e Evicted events (events generated when a key is evicted for maxmemory) # A Alias for g$lshzxe, so that the "AKE" string means all the events. # # The "notify-keyspace-events" takes as argument a string that is composed # by zero or multiple characters. The empty string means that notifications # are disabled at all. # # 例子1: 啟用 list 和 generic 事件, # # notify-keyspace-events Elg # # 例子2 2: 要想訂閱通道名為_(kāi)_keyevent@0__:expired 上expired keys的事件: # # notify-keyspace-events Ex # # # 默認(rèn)不啟用所有的通知,因?yàn)榇蟛糠值挠脩?hù)不需要這些功能,而且這些功能會(huì)帶來(lái)一些開(kāi)銷(xiāo) # # 如果你沒(méi)有指定 K 或者 E,沒(méi)有事件會(huì)被傳遞 # notify-keyspace-events "" ############################### ADVANCED CONFIG ############################### # #創(chuàng)建空白哈希表時(shí),程序默認(rèn)使用 REDIS_ENCODING_ZIPLIST 編碼,當(dāng)以下任何一個(gè)條件被滿(mǎn) #足時(shí),程序?qū)⒕幋a從切換為 REDIS_ENCODING_HT #哈希表中某個(gè)鍵或某個(gè)值的長(zhǎng)度大于 server.hash_max_ziplist_value (默認(rèn)值為 64)。 #壓縮列表中的節(jié)點(diǎn)數(shù)量大于 server.hash_max_ziplist_entries (默認(rèn)值為 512 )。 # # ziplist是一個(gè)解決空間的緊湊的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),但是當(dāng)數(shù)據(jù)超過(guò)閾值時(shí),將采用原生的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu) # # hash-max-ziplist-entries 512 hash-max-ziplist-value 64 # # 與hash表類(lèi)似, # list-max-ziplist-entries 512 list-max-ziplist-value 64 # # 設(shè)置特殊編碼的唯一情況: # 當(dāng)一個(gè)set僅僅由一個(gè)基數(shù)為10最大位數(shù)為64位的有符號(hào)整形的字符串構(gòu)成的時(shí)候 # #以下配置設(shè)置了set的限制大小,當(dāng)小于這個(gè)值的時(shí)候?qū)?huì)使用一個(gè)更緊湊的數(shù)據(jù)結(jié)構(gòu)來(lái)保存 #以期減少內(nèi)存占用 # set-max-intset-entries 512 # # 與hash和list類(lèi)似 zsort也采用如下的配置來(lái)選擇是否進(jìn)行特殊編碼來(lái)節(jié)省空間 # zset-max-ziplist-entries 128 zset-max-ziplist-value 64 # # HyperLogLog 稀疏表示字節(jié)限制 # 這個(gè)限制包含了16個(gè)字節(jié)的頭部,當(dāng)一個(gè)HyperLogLog使用sparse representation # 超過(guò)了這個(gè)顯示,它就會(huì)轉(zhuǎn)換到dense representation上 # # hll-sparse-max-bytes 3000 # # active rehashing使用CPU時(shí)間的每100毫秒中的1毫秒來(lái)進(jìn)行rehashing工作 # 來(lái)rehash redis的主hash表(rehash的時(shí)候在代碼種引入記時(shí)來(lái)保證) # # lazy rehashing :逐步hash,每一次添加查找刪除進(jìn)行一次rehash的步驟 # 又稱(chēng)惰性hash # # 因?yàn)閔ash的再散列會(huì)導(dǎo)致整個(gè)進(jìn)程的stop,為了避免長(zhǎng)時(shí)間的stop,以上的策略都是在分散整個(gè) # rehash的過(guò)程(參照《redis設(shè)計(jì)與實(shí)現(xiàn)》的字典部分) # activerehashing yes # # 客戶(hù)端輸出緩沖區(qū)顯示可以用來(lái)解決由于某些原因?qū)е碌膹?qiáng)制斷線(xiàn) # 而造成的不能讀到足夠的數(shù)據(jù) # 一個(gè)比較常見(jiàn)的原因是發(fā)布訂閱模式種,客戶(hù)端不能足夠快速地消費(fèi)發(fā)布者生產(chǎn)的信息 # # 這個(gè)限制可以設(shè)置為如下的三種類(lèi)型: # # normal -> 正常普通的客戶(hù)端,包含監(jiān)控客戶(hù)端 # slave -> 主從服務(wù)器的從客戶(hù)端 # pubsub -> 訂閱了最少一個(gè)頻道的客戶(hù)端 # # 每一個(gè) client-output-buffer-limit 格式如下: # # client-output-buffer-limit <class> <hard limit> <soft limit> <soft seconds> # # # # 在兩種情況下服務(wù)器認(rèn)為客戶(hù)端不是意外臨時(shí)掉線(xiàn) # # 1.緩沖區(qū)的數(shù)據(jù)達(dá)到硬限制 # 2.緩沖區(qū)的數(shù)據(jù)達(dá)到軟限制,同時(shí)時(shí)間超過(guò)了指定值 # # 因?yàn)橐粋€(gè)客戶(hù)離線(xiàn),有可能是臨時(shí)性的網(wǎng)絡(luò)故障,或者傳輸問(wèn)題 # 也有可能是永久性離線(xiàn) 或者強(qiáng)制性離線(xiàn),此時(shí)服務(wù)器將不會(huì)保留他的緩存數(shù)據(jù) # 以下的設(shè)置就是為了判斷這一情況的 # # # # 硬限制和軟限制都可以通過(guò)將其設(shè)置為0來(lái)關(guān)閉掉 client-output-buffer-limit normal 0 0 0 client-output-buffer-limit slave 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 # # redis會(huì)按照一定的頻率來(lái)處理諸如 關(guān)閉超時(shí)連接,清理沒(méi)有被使用的過(guò)期key等等此類(lèi)后臺(tái)任務(wù) # # 并不是所有的任務(wù)都以相同的頻率來(lái)執(zhí)行的,redis通過(guò)一個(gè)hz的值來(lái)決定處理這些(如上所述的后臺(tái)任務(wù))任務(wù)的頻率 # # # 提高這個(gè)值會(huì)使用更多的cpu時(shí)間來(lái)在redis閑置的時(shí)候處理以上的,但是以此同時(shí) # 超時(shí)的連接的處理和過(guò)期key的清理則會(huì)更精確 # # hz的取值范圍在1到500,不建議設(shè)置為超過(guò)100的值,默認(rèn)是10 hz 10 # # 當(dāng)子進(jìn)程重寫(xiě)AOF文件的時(shí)候,以下選項(xiàng)將會(huì)允許等到存在32MB數(shù)據(jù)的時(shí)候才調(diào)用強(qiáng)制同步 # 這樣可以降低IO上的延遲 # aof-rewrite-incremental-fsync yes
相關(guān)文章
redis?sentinel監(jiān)控高可用集群實(shí)現(xiàn)的配置步驟
這篇文章主要介紹了redis?sentinel監(jiān)控高可用集群實(shí)現(xiàn)的配置步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04簡(jiǎn)單聊一聊redis過(guò)期時(shí)間的問(wèn)題
在使用redis的過(guò)期時(shí)間時(shí)不由想到設(shè)置了過(guò)期時(shí)間,下面這篇文章主要給大家介紹了關(guān)于redis過(guò)期時(shí)間問(wèn)題的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04redis實(shí)現(xiàn)多級(jí)緩存同步方案詳解
這篇文章主要介紹了redis實(shí)現(xiàn)多級(jí)緩存同步方案詳解,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12Redis之SDS數(shù)據(jù)結(jié)構(gòu)的使用
本文主要介紹了Redis之SDS數(shù)據(jù)結(jié)構(gòu)的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08淺析redis cluster介紹與gossip協(xié)議
這篇文章主要介紹了redis cluster介紹與gossip協(xié)議,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09