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