Redis配置文件redis.conf參數詳解

redis.conf配置文件參數詳解node

# Redis configuration file example.

########################################## GENERAL ########################################

daemonize yes    #是否開啓在後臺運行redis,默認爲no,不開啓

pidfile /var/run/redis/redis.pid   #redis在後臺運行時,默認pid文件的存放路徑和文件名

port 6379    #redis運行監聽端口號,默認6379

tcp-backlog 511    #listen隊列的長度,這個跟系統自己的

bind 127.0.0.1    #綁定IP地址

unixsocket /tmp/redis.sock    #unix指定監聽socket

unixsocketperm 755    #當指定監聽爲socket時,能夠指定其權限爲755

timeout 0    #設置客戶端鏈接時的超時時間,單位爲秒。當客戶端在這段時間內沒有發出任何指令,那麼關閉該鏈接,0是關閉此設置

tcp-keepalive 0    #TCP keepalive.若是是非零值,當失去連接時,會使用SO_KEEPALIVE發送TCP ACKs到客戶端。這個參數有兩個做用:1.檢測斷點;2.從網絡中間設備來看,就是保持連接。在Linux上,設定的時間就是發送ACKs的週期。注意:達到雙倍的設定時間纔會關閉連接。在其餘內核上,週期依賴於內核設置。一個比較合理的值爲60s

loglevel notice    #指定日誌級別,debug用於開發/測試;verbose沒debug那麼詳細;notice適用於生產線上,warning只記錄很是重要的信息

logfile /var/log/redis/redis.log    #日誌文件名,以及路徑

database 16    #默認值爲16,默認數據庫爲0,數據庫範圍在0-(database-1)之間

###################################### SNAPSHOTTING#####################################

#save 900 1     #15分鐘內有至少1個鍵被更改則進行快照
#save 300 10      #5分鐘內有至少10個鍵被更改則進行快照
#save 60 10000    #一分鐘內有至少10000個鍵被更改則進行快照
save ""       #表示禁用RDB持久化

stop-writes-on-bgsave-error yes    #表示寫入磁盤時出現錯誤時,是否中止寫入,yes,表示中止,no表示繼續。

rdbcompression yes    #表示是否要壓縮RDB

rdbchecksum yes    #表示是否進行數據校驗

dbfilename dump.rdb    #默認RDB持久化備份文件名

dir /var/lib/redis/    #定義RDB存放路徑

slaveof <masterip> <masterport>    #主從複製,當本機是slave時配置

masterauth <master-password>    #當主機須要密碼驗證的時候配置

slave-serve-stale-data yes    #當slave和master丟失連接,或正處於同步過程當中,是否響應客戶端請求,設置爲yes表示響應,設置爲no,直接返回"SYNC with master in progress"(正在和主服務器同步中)

slave-read-only yes    #設置slave是否爲只讀
repl-diskless-sync no    #disk較慢,而且網絡較快的時候,能夠用diskless
repl-diskless-sync-delay 5    #設置成0的話,傳輸開始asap

repl-disable-tcp-nodelay no    #SYNC完畢後,在slave的socket裏關閉TCP_NODELAY;若是是yes,reids發送少許的TCP包給slave,但可能致使最高40ms的數據延遲;若是是no,那可能在複製的時候,會消耗少許帶寬;默認咱們是爲了低延遲優化而設置成no,若是主從之間有不少網絡跳躍,那設置成yes吧		

repl-backlog-size 100mb    #值越大,salve能夠丟失的時間就越長。

repl-backlog-ttl 3600    #多久釋放backlog,當確認master再也不須要slave的時候,多久釋放。0是永遠不釋放。

slave-priority 100    #當master不可用,Sentinel會根據slave的優先級選舉一個master。最低的優先級的slave,當選master.而配置成0,永遠不會被選舉。(必須≥0)。默認是100	

requirepass foobared    #設置客戶端鏈接密碼,由於Redis響應速度能夠達到每秒100w次,因此密碼要特別複雜

rename-command CONFIG ""    #命令從新命名,或者禁用;重命名命令爲空字符串能夠禁用一些危險命,令好比:FLUSHALL刪除全部數據,須要注意的是,寫入AOF文件或傳送給slave的命令別名也許會引發一些問題

maxclients 10000    #設置最多連接客戶端數量,默認爲10000;實際能夠接受的請求數目爲設置值減去32,這32是Redis爲內部文件描述符保留的							
maxmemory <bytes>    #設置最大使用內存數量,在把Redis看成LRU緩存時特別有用。設置的值要比系統能使用的值要小,由於當啓用刪除算法時,slave輸出緩存也要佔用內存
達到最大內存限制時,使用何種刪除算法
#volatile-lru    ->  使用LRU算法移除帶有過時標緻的key
#allkeys-lru     ->  使用LRU算法移除任何key
#volatile-random ->  隨機移除一個帶有過時標緻的key
#allkeys-random  ->  隨機移除一個key
#volatile-ttl    ->  移除最近要過時的key

#noeviction ->      不刪除key,當有寫請求時,返回錯誤

maxmemory-policy volatile-lru	#默認設置爲volatile-lru

maxmemory-samples	3    #LRU和minimal TTL 算法都不是精準的算法,可是相對精確的算法(爲了節省內存),隨意你能夠選擇樣本大小進行檢測。Redis默認的會選擇3個樣本進行檢測

appendonly no   #默認狀況下,redis沒有開啓AOF方式的持久化,開啓AOF持久化須要把no變爲yes

appendfilename "appendonly.aof"    AOF的保存名稱,默認爲appendonly.aof

# Redis supports three different modes:
redis支持三種AOF文件持久化策略:

# no: don't fsync, just let the OS flush the data when it wants. Faster.
#表示由操做系統決定什麼時候寫入。性能最好,但可靠性最低

# always: fsync after every write to the append only log. Slow, Safest.
表示每次都寫入磁盤。性能最差,比上面的安全一些

# everysec: fsync only one time every second. Compromise.
表示每秒執行一次寫入。折中方案,推薦
appendfsync everysec    #AOF持久化方案,選擇everysec,每秒執行一次寫入

no-appendfsync-on-rewrite no    #設置爲yes表示rewrite期間對新寫操做不fsync,暫時存在內存中,等rewrite完成後再寫入。

auto-aof-rewrite-percentage 100		#指定Redis重寫aof文件的條件,默認爲100,表示與上次rewrite的aof文件大小相比,當前aof文件增加量超過上次aof文件大小的100%時,就會觸發background rewrite。若配置爲0,則會禁用自動rewrite。

auto-aof-rewrite-min-size 64mb		指定觸發rewrite的aof文件大小。若aof文件小於該值,即便當前文件的增量比例達到auto-aof-rewrite-percentage的配置值,也不會觸發自動rewrite。即這兩個配置項同時知足時,纔會觸發rewrite。

# AOF自動重寫(合併命令,減小日誌大小)
# 當AOF日誌大小增長到一個特定比率,Redis調用BGREWRITEAOF自動重寫日誌文件
# 原理:Redis會記錄上次重寫後AOF文件的文件大小。
# 若是剛啓動,則記錄啓動時AOF大小
# 這個基本大小會用來和當前大小比較。若是當前大小比特定比率大,就會觸發重寫。
# 你也須要指定一個AOF須要被重寫的最小值,這樣會避免達到了比率。
# 可是AOF文件還很小的狀況下重寫AOF文件,設置爲0禁用自動重寫

aof-load-truncated yes    #AOF文件可能在尾部是不完整的(上次系統關閉有問題,尤爲是mount、ext4文件系統時沒有加上data=ordered選項,只會發生在os崩潰時,redis本身死不會不完整。)那redis重啓時load進內存的時候就有問題了。發生的時候,能夠選擇reids啓動報錯,或者load儘可能多正常的數據。若是aof-load-truncated是yes,會自動發佈一個log給客戶端而後load(默認)。若是是no,用戶必須手動reids-check-aof修復AOF文件才能夠。

lua-time-limit 5000    #Lua腳本的最大執行時間,單位毫秒,超時後會報錯,而且計入日誌;當一個腳本運行時間超過了最大執行時間,只有SCRIPT KILL和 SHUTDOWN NOSAVE兩個命令可使用;SCRIPT KILL用於中止沒有調用寫命令的腳本。SHUTDOWN NOSAVE是惟一的一個,在腳本的寫命令正在執行用戶又不想等待腳本正常結束的狀況下,關閉服務器的方法。如下選項設置爲0或負數就會取消腳本執行時間限制
slowlog-log-slower-than 10000		#Redis慢查詢日誌記錄超過設定時間的查詢,且只記錄執行命令的時間,不記錄I/O操做,好比:和客戶端交互,發送回覆等;時間單位爲微妙,1000000微妙 = 1 秒;設置爲負數會禁用慢查詢日誌,設置爲0會記錄全部查詢命令

slowlog-max-len 128    #日誌長度沒有限制,可是會消耗內存。超過日誌長度後,最舊的記錄會被移除,使用SLOWLOG RESET命令能夠回收內存

latency-monitor-threshold 0    #用LATENCY打印redis實例在跑命令時的耗時圖表,只記錄大於等於下邊設置的值的操做。0的話,就是關閉監視。能夠動態開啓,直接運行CONFIG SET latency-
monitor-threshold

notify-keyspace-events ""    #能夠通知pub/sub客戶端關於key空間的變化。
# 好比若是開着開關。一個client進行了DEL操做在「foo」key上在database0上。兩個消息將會發布經過 pub/sub
# PUBLISH __keyspace@0__:foo del
# PUBLISH __keyevent@0__:del foo
# 大部分人不須要這個功能,而且還須要必定開銷,因此默認關閉。 
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
# 當有少許條目的時候,哈希使用高效內存數據結構。最大的條目也不能超過設定的閾值。


#和哈希編碼同樣,少許列表也以特殊方式編碼節省內存。「少許」設定以下:
list-max-ziplist-entries 512
list-max-ziplist-value 64
# 集合只在如下狀況下使用特殊編碼來節省內存
# -->集合所有由64位帶符號10進制整數構成的字符串組成
# 下面的選項設置這個特殊集合的大小。
set-max-intset-entries 512
# 當有序集合的長度和元素設定爲如下數字時,又特殊編碼節省內存
zset-max-ziplist-entries 128
zset-max-ziplist-value 64

hll-sparse-max-bytes 3000    HyperLogLog不懂。大於16000徹底不可接受!當CPU很頂得住的話,給10000能夠。默認給3000.
activerehashing yes    #哈希刷新使用每100個CPU毫秒中的1毫秒來幫助刷新主哈希表(頂級鍵值映射表);Redis哈希表使用延遲刷新機制,越多操做,越多刷新.若是服務器空閒,刷新操做就不會進行,更多內存會被哈希表佔用默認每秒進行10次主字典刷新,釋放內存。若是你有硬性延遲需求,偶爾2毫秒的延遲沒法忍受的話。設置爲no,不然設置爲yes
#客戶端輸出緩存限制強迫斷開讀取速度比較慢的客戶端
#有三種類型的限制
#normal -> 正常的客戶端包括監控客戶端
#slave -> 從客戶端
# pubsub -> 客戶端至少訂閱了一個頻道或者模式
	# 客戶端輸出緩存限制語法以下(時間單位:秒)

# client-output-buffer-limit <類別> <強制限制> <軟性限制> <軟性時間>
# 達到強制限制緩存大小,馬上斷開連接。
# 達到軟性限制,仍然會有軟性時間大小的連接時間
# 默認正常客戶端無限制,只有請求後,異步客戶端數據請求速度快於它能讀取數據的速度
# 訂閱模式和主從客戶端又默認限制,由於它們都接受推送。
# 強制限制和軟性限制均可以設置爲0來禁用這個特性
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

hz 10
# 設置Redis後臺任務執行頻率,好比清除過時鍵任務。
# 設置範圍爲1到500,默認爲10.越大CPU消耗越大,延遲越小。
# 建議不要超過100

aof-rewrite-incremental-fsync yes
# 當子進程重寫AOF文件,如下選項開啓時,AOF文件會每產生32M數據同步一次。
# 這有助於更快寫入文件到磁盤避免延遲
相關文章
相關標籤/搜索