#按需配置
#加載個性化的配置
#include /path/local.conf
#按需修改
#綁定的ip地址,多個IP空格隔開
#如果是master bind 127.0.0.1 1.1.1.1 master.ip
#如果是slave bind 127.0.0.1 1.1.1.1
bind 127.0.0.1 1.1.1.1
#保護模式
protected-mode yes
#按需修改
#當(dāng)前實例監(jiān)聽的端口
port 6379
#tcp監(jiān)聽的最大容納數(shù)量,小于系統(tǒng)內(nèi)核
tcp-backlog 128
#指定 unix socket 的路徑。
# unixsocket /tmp/redis.sock
# unixsocketperm 755
#空閑的客戶端超時時間/s
#0表示不設(shè)超時時間
timeout 259200
#tcp連接保活查詢時間
tcp-keepalive 300
#daemon模式
daemonize yes
#是否打開記錄syslog功能
# syslog-enabled no
#syslog的標(biāo)識符
# syslog-ident redis
#日志的來源、設(shè)備
# syslog-facility local0
#
supervised auto
#按需修改
#pidfile文件的絕對路徑
pidfile /data/redis/redis-6379.pid
#日志級別,生產(chǎn)環(huán)境使用notice
loglevel notice
#按需修改
#日志記錄的文件絕對路徑
logfile "/data/logs/redis/redis-6379.log"
#多少個鍵空間,相當(dāng)于多少個數(shù)據(jù)庫
databases 16
#后臺持久化的配置
#900s內(nèi)至少有1個key變化,保存
#300s內(nèi)至少10個key變化,保存
#60s內(nèi)至少有10000個key變化,保存
save 900 1
save 300 10
save 60 10000
#默認情況下,如果 redis 最后一次的后臺保存失敗,redis 將停止接受寫操作,
#這樣以一種強硬的方式讓用戶知道數(shù)據(jù)不能正確的持久化到磁盤,
#否則就會沒人注意到災(zāi)難的發(fā)生。
#如果后臺保存進程重新啟動工作了,redis 也將自動的允許寫操作。
#如果有自己安裝了靠譜的監(jiān)控,可設(shè)置為no
stop-writes-on-bgsave-error yes
#rdb持久化開啟壓縮
rdbcompression yes
#是否校驗rdb文件
rdbchecksum yes
#按需修改
#持久化的文件名稱與目錄
dbfilename redis-6379.rdb
dir /data/redis/
#######################主從模式##########################
#按需修改
#當(dāng)作為slave時配置
#master的ip和port以及密碼
# slaveof
# masterauth
#當(dāng)一個 slave 與 master 失去聯(lián)系,或者復(fù)制正在進行的時候,
# slave 可能會有兩種表現(xiàn):
# 1) 如果為 yes ,slave 仍然會應(yīng)答客戶端請求,但返回的數(shù)據(jù)可能是過時,
# 或者數(shù)據(jù)可能是空的在第一次同步的時候
# 2) 如果為 no ,在你執(zhí)行除了 info he salveof 之外的其他命令時,
# slave 都將返回一個 "SYNC with master in progress" 的錯誤
slave-serve-stale-data yes
#slave只讀模式
slave-read-only yes
#是否使用socket方式復(fù)制數(shù)據(jù)。目前redis復(fù)制提供兩種方式,disk和socket。
#如果新的slave連上來或者重連的slave無法部分同步,就會執(zhí)行全量同步,
#master會生成rdb文件。有2種方式:disk方式是master創(chuàng)建一個新的進程把rdb文件保存到磁盤,
#再把磁盤上的rdb文件傳遞給slave。socket是master創(chuàng)建一個新的進程,
#直接把rdb文件以socket的方式發(fā)給slave。disk方式的時候,
#當(dāng)一個rdb保存的過程中,多個slave都能共享這個rdb文件。
#socket的方式就的一個個slave順序復(fù)制。在磁盤速度緩慢,網(wǎng)速快的情況下推薦用socket方式
repl-diskless-sync no
#diskless復(fù)制的延遲時間,防止設(shè)置為0。一旦復(fù)制開始,
#節(jié)點不會再接收新slave的復(fù)制請求直到下一個rdb傳輸。所以最好等待一段時間,等更多的slave連上來
repl-diskless-sync-delay 5
#slave在一個預(yù)定義的時間發(fā)送ping命令到server
# repl-ping-slave-period 10
#主從復(fù)制過期時間
#這個值一定要比 repl-ping-slave-period 大
#repl-timeout 60
#是否禁止復(fù)制tcp鏈接的tcp nodelay參數(shù),可傳遞yes或者no。
#默認是no,即使用tcp nodelay。如果master設(shè)置了yes來禁止tcp nodelay設(shè)置,
#在把數(shù)據(jù)復(fù)制給slave的時候,會減少包的數(shù)量和更小的網(wǎng)絡(luò)帶寬。
#但是這也可能帶來數(shù)據(jù)的延遲。默認我們推薦更小的延遲,但是在數(shù)據(jù)量傳輸很大的場景下,建議選擇yes
repl-disable-tcp-nodelay no
#復(fù)制緩沖區(qū)大小,這是一個環(huán)形復(fù)制緩沖區(qū),用來保存最新復(fù)制的命令。
#這樣在slave離線的時候,不需要完全復(fù)制master的數(shù)據(jù),如果可以執(zhí)行部分同步,
#只需要把緩沖區(qū)的部分數(shù)據(jù)復(fù)制給slave,就能恢復(fù)正常復(fù)制狀態(tài)。
#緩沖區(qū)的大小越大,slave離線的時間可以更長,
#復(fù)制緩沖區(qū)只有在有slave連接的時候才分配內(nèi)存。沒有slave的一段時間,內(nèi)存會被釋放出來,默認1m
# repl-backlog-size 1mb
#在某寫時間,master不再連接slaves,backlog將被釋放
#0表示不釋放
# repl-backlog-ttl 3600
#當(dāng)master不正常工作時,推舉slave作為新的master
#值越小越優(yōu)先,但是0不可能被選中
slave-priority 100
#redis提供了可以讓master停止寫入的方式,如果配置了min-slaves-to-write,
#健康的slave的個數(shù)小于N,mater就禁止寫入。
#master最少得有多少個健康的slave存活才能執(zhí)行寫命令。
#這個配置雖然不能保證N個slave都一定能接收到master的寫操作,
#但是能避免沒有足夠健康的slave的時候,master不能寫入來避免數(shù)據(jù)丟失。設(shè)置為0是關(guān)閉該功能
# min-slaves-to-write 3
#延遲小于min-slaves-max-lag秒的slave才認為是健康的slave
# min-slaves-max-lag 10
# slave-announce-ip 5.5.5.5
# slave-announce-port 1234
#按需修改
#訪問redis的密碼,如果是slave,不設(shè)置密碼
requirepass root
#命令重新命名
# rename-command CONFIG ""
#最大可以開啟的客戶端連接數(shù),默認10000
#一旦到達最大連接,將會斷開所有的連接
# maxclients 10000
#按需修改
#最大使用的內(nèi)存
#如果設(shè)置這個值,當(dāng)緩存容量達到時,使用策略來移除key
#maxmemory 3000mb
#最大內(nèi)存策略
#volatile-lru :默認策略,只對設(shè)置過期時間的key進行LRU算法刪除
#allkeys-lru :刪除不經(jīng)常使用的key
#volatile-random :隨機刪除即將過期的key
#allkeys-random :隨機刪除一個key
#volatile-ttl :刪除即將過期的key
#noeviction :不過期,寫操作返回報錯
# maxmemory-policy noeviction
#默認隨機選擇5個key,從中淘汰最不常用的
# maxmemory-samples 5
################################ appendonly mode ######################
#是否在每次更新操作后進行日志記錄,如果不開啟,
#可能會在斷電時導(dǎo)致一段時間內(nèi)的數(shù)據(jù)丟失。
#因為redis本身同步數(shù)據(jù)文件是按上面save條件來同步的,
#所以有的數(shù)據(jù)會在一段時間內(nèi)只存在于內(nèi)存中。默認值為no
appendonly yes
#更新日志文件名
appendfilename "appendonly-6379.aof"
#更新日志條件,共有3個可選值。no表示等操作系統(tǒng)進行數(shù)據(jù)緩存同步到磁盤,
#always表示每次更新操作后手動調(diào)用fsync()將數(shù)據(jù)寫到磁盤,
#everysec表示每秒同步一次(默認值)
appendfsync everysec
#當(dāng)AOF日志文件即將增長到指定百分比時,redis通過調(diào)用BGREWRITEAOF是否自動重寫AOF日志文件
no-appendfsync-on-rewrite no
#aof自動重寫配置。當(dāng)目前aof文件大小超過上一次重寫的aof文件大小的百分之多少進行重寫,
#即當(dāng)aof文件增長到一定大小的時候Redis能夠調(diào)用bgrewriteaof對日志文件進行重寫。
#當(dāng)前AOF文件大小是上次日志重寫得到AOF文件大小的二倍(設(shè)置為100)時,自動啟動新的日志重寫過程
auto-aof-rewrite-percentage 100
#設(shè)置允許重寫的最小aof文件大小,避免了達到約定百分比但尺寸仍然很小的情況還要重寫
auto-aof-rewrite-min-size 64mb
#aof文件可能在尾部是不完整的,當(dāng)redis啟動的時候,aof文件的數(shù)據(jù)被載入內(nèi)存。
#重啟可能發(fā)生在redis所在的主機操作系統(tǒng)宕機后,尤其在ext4文件系統(tǒng)沒有加上
#data=ordered選項(redis宕機或者異常終止不會造成尾部不完整現(xiàn)象。)
#出現(xiàn)這種現(xiàn)象,可以選擇讓redis退出,或者導(dǎo)入盡可能多的數(shù)據(jù)。
#如果選擇的是yes,當(dāng)截斷的aof文件被導(dǎo)入的時候,會自動發(fā)布一個log給客戶端然后load。
#如果是no,用戶必須手動redis-check-aof修復(fù)AOF文件才可以
aof-load-truncated yes
################################ LUA SCRIPTING ###############################
#如果達到最大時間限制(毫秒),redis會記個log,然后返回error。
#當(dāng)一個腳本超過了最大時限。只有SCRIPT KILL和SHUTDOWN NOSAVE可以用。
#第一個可以殺沒有調(diào)write命令的東西。
#要是已經(jīng)調(diào)用了write,只能用第二個命令殺
lua-time-limit 5000
################################ REDIS CLUSTER ###############################
#激活集群
# cluster-enabled yes
#集群配置文件,不需要手動配置,運行時生成并更新
# cluster-config-file nodes-6379.conf
#節(jié)點互連超時的閥值。集群節(jié)點超時毫秒數(shù)
# cluster-node-timeout 15000
#在進行故障轉(zhuǎn)移的時候,全部slave都會請求申請為master,
#但是有些slave可能與master斷開連接一段時間了,導(dǎo)致數(shù)據(jù)過于陳舊,
#這樣的slave不應(yīng)該被提升為master。該參數(shù)就是用來判斷slave節(jié)點與master斷線的時間是否過長。
#判斷方法是:
#比較slave斷開連接的時間和(node-timeout * slave-validity-factor) + repl-ping-slave-period
#如果節(jié)點超時時間為三十秒, 并且slave-validity-factor為10,
#假設(shè)默認的repl-ping-slave-period是10秒,即如果超過10秒slave將不會嘗試進行故障轉(zhuǎn)移
# cluster-slave-validity-factor 10
#master的slave數(shù)量大于該值,slave才能遷移到其他孤立master上,
#如這個參數(shù)若被設(shè)為2,那么只有當(dāng)一個主節(jié)點擁有2 個可工作的從節(jié)點時,它的一個從節(jié)點會嘗試遷移
# cluster-migration-barrier 1
#默認情況下,集群全部的slot有節(jié)點負責(zé),集群狀態(tài)才為ok,才能提供服務(wù)。
#設(shè)置為no,可以在slot沒有全部分配的時候提供服務(wù)。不建議打開該配置,
#這樣會造成分區(qū)的時候,小分區(qū)的master一直在接受寫請求,而造成很長時間數(shù)據(jù)不一致
# cluster-require-full-coverage yes
################################## SLOW LOG ###################################
#執(zhí)行時間超過則會記錄到日志,單位微秒
#負數(shù)時間會禁用慢查詢?nèi)罩荆?則會強制記錄所有命令,默認設(shè)置為0.01s
slowlog-log-slower-than 10000
#慢查詢?nèi)罩鹃L度。當(dāng)一個新的命令被寫進日志的時候,最老的那個記錄會被刪掉。
#這個長度沒有限制。只要有足夠的內(nèi)存就行。你可以通過 SLOWLOG RESET 來釋放內(nèi)存
slowlog-max-len 128
################################ LATENCY MONITOR ##############################
#延遲監(jiān)控功能是用來監(jiān)控redis中執(zhí)行比較緩慢的一些操作,用LATENCY打印redis實例在跑命令時的耗時圖表。
#只記錄大于等于下邊設(shè)置的值的操作。0的話,就是關(guān)閉監(jiān)視。默認延遲監(jiān)控功能是關(guān)閉的,
#如果你需要打開,也可以通過CONFIG SET命令動態(tài)設(shè)置
latency-monitor-threshold 0
############################# EVENT NOTIFICATION ##############################
#按需修改
#鍵空間通知
notify-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
#
list-max-ziplist-size -2
#
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
#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)。
#一個比16000大的value是幾乎沒用的,建議的value大概為3000。
#如果對CPU要求不高,對空間要求較高的,建議設(shè)置到10000左右
hll-sparse-max-bytes 3000
#是否激活rehashing,默認開啟
#Redis將在每100毫秒時使用1毫秒的CPU時間來對redis的hash表進行重新hash,
#可以降低內(nèi)存的使用。當(dāng)你的使用場景中,有非常嚴(yán)格的實時性需要,
#不能夠接受Redis時不時的對請求有2毫秒的延遲的話,把這項配置為no。
#如果沒有這么嚴(yán)格的實時性要求,可以設(shè)置為yes,以便能夠盡可能快的釋放內(nèi)存
activerehashing yes
#對客戶端輸出緩沖進行限制可以強迫那些不從服務(wù)器讀取數(shù)據(jù)的客戶端斷開連接,用來強制關(guān)閉傳輸緩慢的客戶端
#對于normal client,第一個0表示取消hard limit,第二個0和第三個0表示取消soft limit,
#normal client默認取消限制,因為如果沒有尋問,他們是不會接收數(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重寫的時候,如果打開了aof-rewrite-incremental-fsync開關(guān),系統(tǒng)會每32MB執(zhí)行一次fsync。
#這對于把文件寫入磁盤是有幫助的,可以避免過大的延遲峰值
aof-rewrite-incremental-fsync yes
排版并不是很好,版本對應(yīng)為3.2.5。
文中部分沒有翻譯,后續(xù)補上。
翻譯有出入的地方,請指出,感激不盡。