1.將redis在windows上啟動(dòng)主要做了以下配置
1.1.在redis.windows.conf中修改一下
原:bind 127.0.0.1
改:# bind 127.0.0.1
原:protected-mode yes
改:protected-mode no
1.2.在cmd中啟動(dòng)redis服務(wù)
命令:
cd redis服務(wù)文件夾所在位置
redis-server redis.windows.conf
做完以上后就可以了,下面的是些其它筆記
------------------------------------------------------------------------------------------------
2.其他配置
2.1 持久化配置
決定了是否將數(shù)據(jù)存到硬盤上,在重啟redis后這些數(shù)據(jù)依舊存在
配置文件中如下
每次有數(shù)據(jù)修改發(fā)生時(shí)都會寫入AOF文件:
appendfsync always
每秒鐘同步一次,該策略為AOF的缺省策略:
appendfsync everysec
從不同步。高效但是數(shù)據(jù)不會被持久化:
appendfsync no
2.2.RDB持久化配置
#在900秒(15分鐘)之后,如果至少有1個(gè)key發(fā)生變化,則dump內(nèi)存快照。
save 900 1
#在300秒(5分鐘)之后,如果至少有10個(gè)key發(fā)生變化,則dump內(nèi)存快照。
save 300 10
#在60秒(1分鐘)之后,如果至少有10000個(gè)key發(fā)生變化,則dump內(nèi)存快照。
save 60 10000
3.3最大使用內(nèi)存
例如我要配置最大使用內(nèi)存為8Gb
8*1024*1024*1024
maxmemory 8589934592
4.配置文件全文翻譯
# Redis配置文件例子.
#
# 注意:為了能讀取到配置文件,Redis服務(wù)必須以配置文件的路徑作為第一個(gè)參數(shù)啟動(dòng)
# ./redis-server /path/to/redis.conf
# 關(guān)于單位,當(dāng)你需要指定內(nèi)存的大小時(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" 不會被 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
################################## NETWORK #####################################
# 默認(rèn)情況下redis會在所有的可用網(wǎng)絡(luò)接口中進(jìn)行監(jiān)聽,如果你想讓redis在指定的網(wǎng)絡(luò)接口中
# 監(jiān)聽,那么可以使用bind 命令來指定redis的監(jiān)聽接口
#
# 例如:
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
#
# ~~~ 警告 ~~~ 如果允許所有的網(wǎng)絡(luò)接口訪問Redis,這樣做是很危險(xiǎn)的,如果你只是需要本機(jī)訪問
# 可以指定特定的127.0.0.1,如果需要外網(wǎng)訪問,請配置防火墻策略
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind 127.0.0.1
# 是否開啟保護(hù)模式,默認(rèn)開啟。要是配置里沒有指定bind和密碼。
# 開啟該參數(shù)后,redis只會本地進(jìn)行訪問,拒絕外部訪問。
# 要是開啟了密碼和bind,可以開啟。否則最好關(guān)閉,設(shè)置為no。
protected-mode yes
# 在指定的端口上進(jìn)行監(jiān)聽,默認(rèn)是 6379
# 如果端口設(shè)置為0,那么redis就不會在TCP socket上進(jìn)行監(jiān)聽
port 6379
# TCP listen() backlog.
#
# 在一個(gè)并發(fā)量高的環(huán)境中,你需要指定一個(gè)比較大的backlog值來避免慢連接的情況
# 注意,linux內(nèi)核會默認(rèn) 使用/proc/sys/net/core/somaxconn 的值來削減 backlog的實(shí)際值,
# 因此你需要確保提升 somaxconn 和 tcp_max_syn_backlog 這兩個(gè)值來確保此處的backlog生效
tcp-backlog 511
# Unix socket.
#
# 指定unix sock的路徑來進(jìn)行連接監(jiān)聽,默認(rèn)是不指定,因此redis不會在unix socket上進(jìn)行監(jiān)聽
#
# unixsocket /tmp/redis.sock
# unixsocketperm 700
# 關(guān)閉掉空閑N秒的連接(0則是不處理空閑連接)
timeout 0
# TCP keepalive.
#
# 如果該值不為0,將使用 SO_KEEPALIVE 這一默認(rèn)的做法來向客戶端連接發(fā)送TCP ACKs
#
# 這樣的好處有以下兩個(gè)原因
# 1)檢測已經(jīng)死亡的對端(譯者注:TCP的關(guān)閉會存在無法完成4次握手的情況,如斷電,斷網(wǎng),數(shù)據(jù)丟失等等)
# 2)保持連接在網(wǎng)絡(luò)環(huán)境中的存活
#
tcp-keepalive 0
################################# 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 yes
# 3.2新增的參數(shù),不懂
supervised no
# 當(dāng)redis以守護(hù)進(jìn)程運(yùn)行時(shí),將會使用/var/run/redis.pid作為 pid文件的位置
pidfile /var/run/redis.pid
# 指定日志的記錄級別的
# 可以是如下的幾個(gè)值之一
# debug (盡可能多的日志信息,用于開發(fā)和測試之中)
# verbose (少但是有用的信息, 沒有debug級別那么混亂)
# notice (適量的信息,用于生產(chǎn)環(huán)境)
# warning (只有非常重要和關(guān)鍵的信息會被記錄)
loglevel notice
# 指定日志文件的位置. 為空時(shí)將輸出到標(biāo)準(zhǔn)輸出設(shè)備
# 如果你在demo模式下使用標(biāo)準(zhǔn)輸出的日志,日志將會輸出到 /dev/null
logfile redis.log
# 當(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ù)庫的數(shù)量. 默認(rèn)的數(shù)據(jù)庫是DB 0 使得你可以在每一個(gè)連接的基礎(chǔ)之上使用
# SELECT <dbid> 來指定另外的數(shù)據(jù)庫,但是這個(gè)值必須在 0到 'database'-1之間
databases 16
################################ SNAPSHOTTING ################################
#
# 保存 DB 到硬盤:
#
# save <seconds> <changes>
#
# 將會在<seconds> 和 <changes>兩個(gè)值同時(shí)滿足時(shí),將DB數(shù)據(jù)保存到硬盤中
# 其中<seconds> 每多少秒,<changes>是改變的key的數(shù)量
#
# 在以下的例子中,將會存在如下的行為
# 當(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會在RDB快照開啟和最近后臺保存失敗的時(shí)候停止接受寫入(最少一個(gè)保存點(diǎn))
# 這會使得用戶察覺(通常比較困難)到數(shù)據(jù)不會保持在硬盤上的正確性,否則很難發(fā)現(xiàn)
# 這些災(zāi)難會發(fā)生,如果后臺保存程序再次開始工作,reidis會再次自動(dòng)允許寫入
# 然而如果對redis服務(wù)器設(shè)置了合理持續(xù)的監(jiān)控,那么你可以關(guān)閉掉這個(gè)選項(xiàng)。
# 這會導(dǎo)致redis將繼續(xù)進(jìn)行工作,無論硬盤,權(quán)限或者其他的是否有問題
stop-writes-on-bgsave-error no
# 是否在dump到 rdb 數(shù)據(jù)庫的時(shí)候使用LZF來壓縮字符串
# 默認(rèn)是 yes,因?yàn)檫@是一個(gè)優(yōu)良的做法
# 如果你不想耗費(fèi)你的CPU處理能力,你可以設(shè)置為 no,但是這會導(dǎo)致你的數(shù)據(jù)會很大
rdbcompression yes
# 從RDB的版本5開始,CRC64校驗(yàn)值會寫入到文件的末尾
# 這會使得格式化過程中,使得文件的完整性更有保障,
# 但是這會在保存和加載的時(shí)候損失不少的性能(大概在10%)
# 你可以關(guān)閉這個(gè)功能來獲得最高的性能
#
# RDB文件會在校驗(yàn)功能關(guān)閉的時(shí)候,使用0來作為校驗(yàn)值,這將告訴加載代碼來跳過校驗(yàn)步驟
rdbchecksum yes
# DB的文件名稱
dbfilename dump.rdb
# 工作目錄.
#
# DB將會使用上述 'dbfilename'指定的文件名寫入到該目錄中
#
# 追加的文件也會在該目錄中創(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和端口號來獲取DB數(shù)據(jù)
#
# slaveof <masterip> <masterport>
# 如果主服務(wù)器開啟了密碼保護(hù)(使用下面的"requirepass"配置)
# 這個(gè)配置就是告訴從服務(wù)在發(fā)起向主服務(wù)器的異步復(fù)制的請求之前使用如下的密碼進(jìn)行認(rèn)證,
# 否則主服務(wù)器會拒絕這個(gè)請求
#
# masterauth <master-password>
# 如果從服務(wù)器失去了和主服務(wù)器之間的連接,或者當(dāng)復(fù)制仍然處于處理狀態(tài)的時(shí)候
# 從服務(wù)器做出如下的兩個(gè)行為
#
# 1)如果 slave-serve-stale-data 被設(shè)置為 yes(默認(rèn)值),從服務(wù)器將會持續(xù)
# 回復(fù)來自客戶端的請求,可能會回復(fù)已經(jīng)過期的數(shù)據(jù),
# 或者返回空的數(shù)據(jù),當(dāng)從服務(wù)器第一次異步請求數(shù)據(jù)時(shí)。
#
# 2)如果 slave-serve-stale-data 被設(shè)置為 no ,
# 從服務(wù)器就會返回"SYNC with master in progress"
# 這個(gè)錯(cuò)誤,來應(yīng)答所有命令除了 INFO 和 SLAVEOF
#
slave-serve-stale-data yes
# 你可以配置一個(gè)從服務(wù)器的實(shí)例是否接受寫請求,
# 從服務(wù)器在存儲一些短暫的數(shù)據(jù)的的時(shí)候,接收寫請求是一件非常正確的事情
# (因?yàn)閿?shù)據(jù)在向主服務(wù)器同步之后非常容易擦除)但是會因?yàn)榕渲貌徽_而導(dǎo)致一些問題
#
# 從redis 2.6開始默認(rèn)從服務(wù)器是只讀的服務(wù)器
#
# 提示:只讀的從服務(wù)器并不是設(shè)計(jì)用來公開給不受信任的互聯(lián)網(wǎng)客戶端的,它
# 僅僅是一個(gè)用來防止對實(shí)例進(jìn)行誤操作的保護(hù)層。只讀從服務(wù)器默認(rèn)用來輸出管理命令
# 例如 CONFIG, DEBUG 和其他。如果你想限制它的規(guī)模,你可以使用'rename-command'來
# 提高它的安全性,使得她作為一個(gè)影子來執(zhí)行管理或者危險(xiǎn)的命令
slave-read-only yes
# 是否使用socket方式復(fù)制數(shù)據(jù)。目前redis復(fù)制提供兩種方式,disk和socket。
# 如果新的slave連上來或者重連的slave無法部分同步,
# 就會執(zhí)行全量同步,master會生成rdb文件。
# 有2種方式:disk方式是master創(chuàng)建一個(gè)新的進(jìn)程把rdb文件保存到磁盤,
# 再把磁盤上的rdb文件傳遞給slave。socket是master創(chuàng)建一個(gè)新的進(jìn)程,
# 直接把rdb文件以socket的方式發(fā)給slave。disk方式的時(shí)候,當(dāng)一個(gè)rdb保存的過程中,
# 多個(gè)slave都能共享這個(gè)rdb文件。socket的方式就的一個(gè)個(gè)slave順序復(fù)制。
# 在磁盤速度緩慢,網(wǎng)速快的情況下推薦用socket方式。
repl-diskless-sync no
# diskless復(fù)制的延遲時(shí)間,防止設(shè)置為0。一旦復(fù)制開始,
# 節(jié)點(diǎn)不會再接收新slave的復(fù)制請求直到下一個(gè)rdb傳輸。
# 所以最好等待一段時(shí)間,等更多的slave連上來。
repl-diskless-sync-delay 5
# slave根據(jù)指定的時(shí)間間隔向服務(wù)器發(fā)送ping請求。
# 時(shí)間間隔可以通過 repl_ping_slave_period 來設(shè)置,默認(rèn)10秒。
#
# repl-ping-slave-period 10
# 復(fù)制連接超時(shí)時(shí)間。master和slave都有超時(shí)時(shí)間的設(shè)置。
# master檢測到slave上次發(fā)送的時(shí)間超過repl-timeout,即認(rèn)為slave離線,清除該slave信息。
# slave檢測到上次和master交互的時(shí)間超過repl-timeout,則認(rèn)為master離線。
# 需要注意的是repl-timeout需要設(shè)置一個(gè)比repl-ping-slave-period更大的值,
# 不然會經(jīng)常檢測到超時(shí)。
#
# repl-timeout 60
# 是否禁止復(fù)制tcp鏈接的tcp nodelay參數(shù),可傳遞yes或者no。默認(rèn)是no,即使用tcp nodelay。
# 如果master設(shè)置了yes來禁止tcp nodelay設(shè)置,在把數(shù)據(jù)復(fù)制給slave的時(shí)候,
# 會減少包的數(shù)量和更小的網(wǎng)絡(luò)帶寬。但是這也可能帶來數(shù)據(jù)的延遲。默認(rèn)我們推薦更小的延遲,
# 但是在數(shù)據(jù)量傳輸很大的場景下,建議選擇yes。
repl-disable-tcp-nodelay no
# 復(fù)制緩沖區(qū)大小,這是一個(gè)環(huán)形復(fù)制緩沖區(qū),用來保存最新復(fù)制的命令。
# 這樣在slave離線的時(shí)候,不需要完全復(fù)制master的數(shù)據(jù),如果可以執(zhí)行部分同步,
# 只需要把緩沖區(qū)的部分?jǐn)?shù)據(jù)復(fù)制給slave,就能恢復(fù)正常復(fù)制狀態(tài)。緩沖區(qū)的大小越大,
# slave離線的時(shí)間可以更長,復(fù)制緩沖區(qū)只有在有slave連接的時(shí)候才分配內(nèi)存。
# 沒有slave的一段時(shí)間,內(nèi)存會被釋放出來,默認(rèn)1m。
#
# repl-backlog-size 1mb
# master沒有slave一段時(shí)間會釋放復(fù)制緩沖區(qū)的內(nèi)存,
# repl-backlog-ttl用來設(shè)置該時(shí)間長度。單位為秒。
#
# repl-backlog-ttl 3600
# 當(dāng)master不可用,Sentinel會根據(jù)slave的優(yōu)先級選舉一個(gè)master。
# 最低的優(yōu)先級的slave,當(dāng)選master。而配置成0,永遠(yuǎn)不會被選舉。
slave-priority 100
# redis提供了可以讓master停止寫入的方式,如果配置了min-slaves-to-write,
# 健康的slave的個(gè)數(shù)小于N,mater就禁止寫入。
# master最少得有多少個(gè)健康的slave存活才能執(zhí)行寫命令。
# 這個(gè)配置雖然不能保證N個(gè)slave都一定能接收到master的寫操作,
# 但是能避免沒有足夠健康的slave的時(shí)候,master不能寫入來避免數(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è)特性。
# min-slaves-max-lag is set to 10.
################################## SECURITY ###################################
# requirepass配置可以讓用戶使用AUTH命令來認(rèn)證密碼,才能使用其他命令。
# 這讓redis可以使用在不受信任的網(wǎng)絡(luò)中。為了保持向后的兼容性,可以注釋該命令,
# 因?yàn)榇蟛糠钟脩粢膊恍枰J(rèn)證。使用requirepass的時(shí)候需要注意,因?yàn)閞edis太快了,
# 每秒可以認(rèn)證15w次密碼,簡單的密碼很容易被攻破,所以最好使用一個(gè)更復(fù)雜的密碼。
#
# requirepass 123456
# Command renaming.
#
# 把危險(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)部打開文件或者和slave連接等,
# 所以maxclients最小建議設(shè)置到32。如果超過了maxclients,
# redis會給新的連接發(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)存容量超過maxmemory后的處理策略。
# volatile-lru:利用LRU算法移除設(shè)置過過期時(shí)間的key。
# volatile-random:隨機(jī)移除設(shè)置過過期時(shí)間的key。
# volatile-ttl:移除即將過期的key,根據(jù)最近過期時(shí)間來刪除(輔以TTL)
# allkeys-lru:利用LRU算法移除任何key。
# allkeys-random:隨機(jī)移除任何key。
# noeviction:不移除任何key,只是返回一個(gè)寫錯(cuò)誤。
# 上面的這些驅(qū)逐策略,如果redis沒有合適的key驅(qū)逐,對于寫命令,還是會返回錯(cuò)誤。
# redis將不再接收寫請求,只接收get請求。寫命令包括:set setnx
#
# maxmemory-policy noeviction
# lru檢測的樣本數(shù)。使用lru或者ttl淘汰算法,從需要淘汰的列表中隨機(jī)選擇sample個(gè)key,
# 選出閑置時(shí)間最長的key移除。
#
# maxmemory-samples 5
############################## APPEND ONLY MODE ###############################
# 默認(rèn)redis使用的是rdb方式持久化,這種方式在許多應(yīng)用中已經(jīng)足夠用了。
# 但是redis如果中途宕機(jī),會導(dǎo)致可能有幾分鐘的數(shù)據(jù)丟失,根據(jù)save來策略進(jìn)行持久化,
# Append Only File是另一種持久化方式,可以提供更好的持久化特性。
# Redis會把每次寫入的數(shù)據(jù)在接收后都寫入 appendonly.aof 文件,
# 每次啟動(dòng)時(shí)Redis都會先把這個(gè)文件的數(shù)據(jù)讀入內(nèi)存里,先忽略RDB文件。
appendonly yes
# aof文件名(default: "appendonly.aof")
appendfilename "appendonly.aof"
# aof持久化策略的配置
# no 表示不執(zhí)行fsync,由操作系統(tǒng)保證數(shù)據(jù)同步到磁盤,速度最快。
# always 表示每次寫入都執(zhí)行fsync,以保證數(shù)據(jù)同步到磁盤。
# everysec 表示每秒執(zhí)行一次fsync,可能會導(dǎo)致丟失這1s數(shù)據(jù)。
appendfsync everysec
# 在aof重寫或者寫入rdb文件的時(shí)候,會執(zhí)行大量IO,此時(shí)對于everysec和always的aof模式來說,
# 執(zhí)行fsync會造成阻塞過長時(shí)間,no-appendfsync-on-rewrite字段設(shè)置為默認(rèn)設(shè)置為no。
# 如果對延遲要求很高的應(yīng)用,這個(gè)字段可以設(shè)置為yes,否則還是設(shè)置為no,
# 這樣對持久化特性來說這是更安全的選擇。設(shè)置為yes表示rewrite期間對新寫操作不fsync,
# 暫時(shí)存在內(nèi)存中,等rewrite完成后再寫入,默認(rèn)為no,建議yes。
# Linux的默認(rèn)fsync策略是30秒。可能丟失30秒數(shù)據(jù)。
no-appendfsync-on-rewrite no
# aof自動(dòng)重寫配置。當(dāng)目前aof文件大小超過上一次重寫的aof文件大小的百分之多少進(jìn)行重寫,
# 即當(dāng)aof文件增長到一定大小的時(shí)候Redis能夠調(diào)用bgrewriteaof對日志文件進(jìn)行重寫。
# 當(dāng)前AOF文件大小是上次日志重寫得到AOF文件大小的二倍(設(shè)置為100)時(shí),
# 自動(dòng)啟動(dòng)新的日志重寫過程。
auto-aof-rewrite-percentage 100
# 設(shè)置允許重寫的最小aof文件大小,避免了達(dá)到約定百分比但尺寸仍然很小的情況還要重寫
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)沒有加上data=ordered選項(xiàng)(redis宕機(jī)或者異常終止不會造成尾部不完整現(xiàn)象。)
# 出現(xiàn)這種現(xiàn)象,可以選擇讓redis退出,或者導(dǎo)入盡可能多的數(shù)據(jù)。如果選擇的是yes,
# 當(dāng)截?cái)嗟腶of文件被導(dǎo)入的時(shí)候,會自動(dòng)發(fā)布一個(gè)log給客戶端然后load。
# 如果是no,用戶必須手動(dòng)redis-check-aof修復(fù)AOF文件才可以。
aof-load-truncated yes
################################ LUA SCRIPTING ###############################
# Lua腳本的最大超時(shí)時(shí)間.
#
# 如果達(dá)到最大時(shí)間限制(毫秒),redis會記個(gè)log,然后返回error。
# 當(dāng)一個(gè)腳本超過了最大時(shí)限。只有SCRIPT KILL和SHUTDOWN NOSAVE可以用。
# 第一個(gè)可以殺沒有調(diào)write命令的東西。要是已經(jīng)調(diào)用了write,只能用第二個(gè)命令殺。
lua-time-limit 5000
################################ REDIS CLUSTER ###############################
#
# 集群開關(guān),默認(rèn)是不開啟集群模式。
#
# cluster-enabled yes
# 集群配置文件的名稱,每個(gè)節(jié)點(diǎn)都有一個(gè)集群相關(guān)的配置文件,持久化保存集群的信息。
# 這個(gè)文件并不需要手動(dòng)配置,這個(gè)配置文件有Redis生成并更新,
# 每個(gè)Redis集群節(jié)點(diǎn)需要一個(gè)單獨(dú)的配置文件,請確保與實(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都會請求申請為master,
# 但是有些slave可能與master斷開連接一段時(shí)間了,導(dǎo)致數(shù)據(jù)過于陳舊,
# 這樣的slave不應(yīng)該被提升為master。該參數(shù)就是用來判斷slave節(jié)點(diǎn)與master斷線的時(shí)間是否過長。
# 判斷方法是:
# 比較slave斷開連接的時(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秒,即如果超過310秒slave將不會嘗試進(jìn)行故障轉(zhuǎn)移
#
# 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)會嘗試遷移。
#
# cluster-migration-barrier 1
# 默認(rèn)情況下,集群全部的slot有節(jié)點(diǎn)負(fù)責(zé),集群狀態(tài)才為ok,才能提供服務(wù)。
# 設(shè)置為no,可以在slot沒有全部分配的時(shí)候提供服務(wù)。不建議打開該配置,這樣會造成分區(qū)的時(shí)候,
# 小分區(qū)的master一直在接受寫請求,而造成很長時(shí)間數(shù)據(jù)不一致。
#
# cluster-require-full-coverage yes
################################## SLOW LOG ###################################
# slog log是用來記錄redis運(yùn)行中執(zhí)行比較慢的命令耗時(shí)。
# 當(dāng)命令的執(zhí)行超過了指定時(shí)間,就記錄在slow log中,slog log保存在內(nèi)存中,所以沒有IO操作。
# 執(zhí)行時(shí)間比slowlog-log-slower-than大的請求記錄到slowlog里面,
# 單位是微秒,所以1000000就是1秒。
# 注意,負(fù)數(shù)時(shí)間會禁用慢查詢?nèi)罩荆?則會強(qiáng)制記錄所有命令。
slowlog-log-slower-than 10000
# 慢查詢?nèi)罩鹃L度。當(dāng)一個(gè)新的命令被寫進(jìn)日志的時(shí)候,最老的那個(gè)記錄會被刪掉。
# 這個(gè)長度沒有限制。只要有足夠的內(nèi)存就行。你可以通過 SLOWLOG RESET 來釋放內(nèi)存。
slowlog-max-len 128
################################ LATENCY MONITOR ##############################
# 延遲監(jiān)控功能是用來監(jiān)控redis中執(zhí)行比較緩慢的一些操作,
# 用LATENCY打印redis實(shí)例在跑命令時(shí)的耗時(shí)圖表。只記錄大于等于下邊設(shè)置的值的操作。
# 0的話,就是關(guān)閉監(jiān)視。默認(rèn)延遲監(jiān)控功能是關(guān)閉的,
# 如果你需要打開,也可以通過CONFIG SET命令動(dòng)態(tài)設(shè)置。
latency-monitor-threshold 0
############################# EVENT NOTIFICATION ##############################
# 鍵空間通知使得客戶端可以通過訂閱頻道或模式,來接收那些以某種方式改動(dòng)了 Redis 數(shù)據(jù)集的事件。
# 因?yàn)殚_啟鍵空間通知功能需要消耗一些 CPU ,所以在默認(rèn)配置下,該功能處于關(guān)閉狀態(tài)。
# notify-keyspace-events 的參數(shù)可以是以下字符的任意組合,
# 它指定了服務(wù)器該發(fā)送哪些類型的通知:
# K 鍵空間通知,所有通知以 __keyspace@__ 為前綴
# E 鍵事件通知,所有通知以 __keyevent@__ 為前綴
# g DEL 、 EXPIRE 、 RENAME 等類型無關(guān)的通用命令的通知
# $ 字符串命令的通知
# l 列表命令的通知
# s 集合命令的通知
# h 哈希命令的通知
# z 有序集合命令的通知
# x 過期事件:每當(dāng)有過期鍵被刪除時(shí)發(fā)送
# e 驅(qū)逐(evict)事件:每當(dāng)有鍵因?yàn)?maxmemory 政策而被刪除時(shí)發(fā)送
# A 參數(shù) g$lshzxe 的別名
# 輸入的參數(shù)中至少要有一個(gè) K 或者 E,否則的話,不管其余的參數(shù)是什么,都不會有任何 通知被分發(fā)。
notify-keyspace-events ""
############################### ADVANCED CONFIG ###############################
# 數(shù)據(jù)量小于等于hash-max-ziplist-entries的用ziplist,
# 大于hash-max-ziplist-entries用hash
# value大小小于等于hash-max-ziplist-value的用ziplist,
# 大于hash-max-ziplist-value用hash。
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
# Lists are also encoded in a special way to save a lot of space.
# The number of entries allowed per internal list node can be specified
# as a fixed maximum size or a maximum number of elements.
# For a fixed maximum size, use -5 through -1, meaning:
# -5: max size: 64 Kb <-- not recommended for normal workloads
# -4: max size: 32 Kb <-- not recommended
# -3: max size: 16 Kb <-- probably not recommended
# -2: max size: 8 Kb <-- good
# -1: max size: 4 Kb <-- good
# Positive numbers mean store up to _exactly_ that number of elements
# per list node.
# The highest performing option is usually -2 (8 Kb size) or -1 (4 Kb size),
# but if your use case is unique, adjust the settings as necessary.
list-max-ziplist-size -2
# Lists may also be compressed.
# Compress depth is the number of quicklist ziplist nodes from *each* side of
# the list to *exclude* from compression. The head and tail of the list
# are always uncompressed for fast push/pop operations. Settings are:
# 0: disable all list compression
# 1: depth 1 means "don't start compressing until after 1 node into the list,
# going from either the head or tail"
# So: [head]->node->node->...->node->[tail]
# [head], [tail] will always be uncompressed; inner nodes will compress.
# 2: [head]->[next]->node->node->...->node->[prev]->[tail]
# 2 here means: don't compress head or head->next or tail->prev or tail,
# but compress all nodes between them.
# 3: [head]->[next]->[next]->node->node->...->node->[prev]->[prev]->[tail]
# etc.
list-compress-depth 0
# 數(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
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是幾乎沒用的,建議的value大概為3000。
# 如果對CPU要求不高,對空間要求較高的,建議設(shè)置到10000左右。
hll-sparse-max-bytes 3000
# Redis將在每100毫秒時(shí)使用1毫秒的CPU時(shí)間來對redis的hash表進(jìn)行重新hash,可以降低內(nèi)存的使用。
# 當(dāng)你的使用場景中,有非常嚴(yán)格的實(shí)時(shí)性需要,不能夠接受Redis時(shí)不時(shí)的對請求有2毫秒的延遲的話,
# 把這項(xiàng)配置為no。如果沒有這么嚴(yán)格的實(shí)時(shí)性要求,可以設(shè)置為yes,以便能夠盡可能快的釋放內(nèi)存。
activerehashing yes
# 對客戶端輸出緩沖進(jìn)行限制可以強(qiáng)迫那些不從服務(wù)器讀取數(shù)據(jù)的客戶端斷開連接,
# 用來強(qiáng)制關(guān)閉傳輸緩慢的客戶端。
# 對于normal client,第一個(gè)0表示取消hard limit,
# 第二個(gè)0和第三個(gè)0表示取消soft limit,normal client默認(rèn)取消限制,因?yàn)槿绻麤]有尋問,他們是不會接收數(shù)據(jù)的。
client-output-buffer-limit normal 0 0 0
# 對于slave client和MONITER client,如果client-output-buffer一旦超過256mb,
# 又或者超過64mb持續(xù)60秒,那么服務(wù)器就會立即斷開客戶端連接。
client-output-buffer-limit slave 256mb 64mb 60
# 對于pubsub client,如果client-output-buffer一旦超過32mb,
# 又或者超過8mb持續(xù)60秒,那么服務(wù)器就會立即斷開客戶端連接。
client-output-buffer-limit pubsub 32mb 8mb 60
# redis執(zhí)行任務(wù)的頻率為1s除以hz。
hz 10
# 在aof重寫的時(shí)候,如果打開了aof-rewrite-incremental-fsync開關(guān),
# 系統(tǒng)會每32MB執(zhí)行一次fsync。這對于把文件寫入磁盤是有幫助的,可以避免過大的延遲峰值。
aof-rewrite-incremental-fsync yes