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數據同步一次。 # 這有助於更快寫入文件到磁盤避免延遲