Redis3.2.8配置參數及說明


bind 127.0.0.1
# 綁定的主機地址,不設置默認將處理所有請求
protected-mode yes
# 是否開啟保護模式,默認開啟,要是配置里面沒有指定bind和密碼,開啟該參數后,redis只會本地進行訪問,
拒絕外部訪問,要是開啟了密碼和bind,可以開啟,否則最好關閉,設置為no
port 6379
# 監聽的端口號
tcp-backlog 511
# 此參數確定了TCP連接中已完成隊列(完成三次握手之后)的長度,此值必須不大於linux系統定義的
/proc/sys/net/core/somaxconn值,默認是511,而linux的默認參數值是128,當系統並發量並且客戶端
速度緩慢的時候,可以將這兩個參數一起參考設定,該內核參數默認值一般是128,對於負載很大的程序來說
不能滿足,一般會將它修改為2048或者更大,在/etc/sysctl.conf中添加:net.core.somaxconn=2048,然后
使用:sysctl -p使該設定生效
timeout 0
# 當客戶端閑置多長時間后關閉連接,0,表示不限制
tcp-keepalive 300
# 如果設置不為0,就使用配置tcp的SO_KEEPALIVE值,使用keepalive有兩個好處:檢測掛掉的對端。
降低中間設備出問題而導致網絡看似連接卻已經與對端端口的問題。在Linux內核中,
設置了keepalive,redis會定時給對端發送ack。檢測到對端關閉需要兩倍的設置值。
daemonize yes
# 是否以守護進程的模式運行,當使用啟動腳本運行時,與此設置關系不大
supervised no
# 可以通過upstart和systemd管理Redis守護進程,這個參數是和具體的操作系統相關的
pidfile /var/run/redis_6379.pid
# 當redis以守護進程方式運行時,默認寫入pid的文件及路徑
loglevel notice
# 日志級別,最好是warning
logfile /var/log/redis_6379.log
# 指定了記錄日志的文件。空字符串的話,日志會打印到標准輸出設備。后台運行的redis標准輸出是/dev/null
databases 16
# 數據庫的數量,默認使用的數據庫是DB 0。可以通過”SELECT “命令選擇一個db
save 900 1
# 900秒有一個key變化,就做一次保存
save 300 10
# 300秒有十個key變化,就做一次保存
save 60 10000
# 60秒有10000個key變化,就做一次保存
stop-writes-on-bgsave-error yes
# 在出現錯誤的時候,是否要停止保存
rdbcompression yes
# 使用壓縮rdb文件,rdb文件壓縮使用LZF算法,yes表示壓縮,但需要消耗CPU資源,no表示不壓縮,需要跟多磁盤空間
rdbchecksum yes
# 是否校驗rdb文件的名稱,從rdb格式的第五個版本開始,在rdb文件的末尾會帶上CRC64校驗和,這更有利於文件的容錯,
但是在保存rdb文件的時候,會有大概10%的性能損耗,如果追求高性能,可關閉該配置
dbfilename dump.rdb
# rdb文件的名稱
dir /var/lib/redis/6379
# 數據庫目錄,數據庫的寫入會在這個目錄,rdb、aof文件也會寫在這個目錄
slave-serve-stale-data yes
# 當從庫同主機失去連接或者復制正在進行,從庫有兩種運行方式
(1)、默認yes,從庫會繼續相應客戶端的請求
(2)、no,除去INFO和SLAVOF命令之外的任何請求都會返回一個錯誤"SYNC with master in progress"
slave-read-only yes
# yes開啟從庫只讀
repl-diskless-sync no
# 是否使用socket方式復制數據,目前redis復制提供兩種凡是,disk和socket,如果新的slave連上來或者重連的slave
無法部分同步,就會執行全量同步,master會生成rdb文件,有兩種方式:
(1)、disk方式是master創建一個新的進程把rdb文件保存到磁盤,再把磁盤上的rdb文件傳送給slave
(2)、socket是master創建一個新的進程,直接把rdb文件以socket的方式給slave
disk方式的時候當一個rdb保存的過程中,多個slave都能共享這個rdb文件,socket的方式就是一個個slave順序復制
在磁盤速度緩慢,網速快的情況下建議使用socket方式
repl-diskless-sync-delay 5
# diskless復制的延遲時間,防止設置為0,一旦開始復制,節點不會再接受新的slave的復制請求,直到下一個rdb傳輸,
所以最好等待一段時間,等更多的slave連上來
repl-disable-tcp-nodelay no
# 是否禁止復制tcp鏈接的tcp nodelay參數,可傳遞yes或者no。默認是no,即使用tcp nodelay。如果master設置了yes
來禁止tcp nodelay設置,在把數據復制給slave的時候,會減少包的數量和更小的網絡帶寬。但是這也可能帶來數據的延遲。
默認我們推薦更小的延遲,但是在數據量傳輸很大的場景下,建議選擇yes。
slave-priority 100
# 當master不可用,Sentinel會根據slave的優先級選舉一個master。最低的優先級的slave,當選master。而配置成0,永遠不會被選舉。
appendonly no
# 默認redis使用的是rdb方式持久化,這種方式在許多應用中已經足夠用了。但是redis如果中途宕機,會導致可能有幾分鍾的數據丟失,
根據save來策略進行持久化,Append Only File是另一種持久化方式,可以提供更好的持久化特性。Redis會把每次寫入的數據在接收后
都寫入 appendonly.aof 文件,每次啟動時Redis都會先把這個文件的數據讀入內存里,先忽略RDB文件
appendfilename "appendonly.aof"
# aof文件名
appendfsync everysec
# aof持久化策略的配置
(1)、no表示不執行fsync,由操作系統保證數據同步到磁盤,速度最快。
(2)、always表示每次寫入都執行fsync,以保證數據同步到磁盤。
(3)、everysec表示每秒執行一次fsync,可能會導致丟失這1s數據。
no-appendfsync-on-rewrite no
# 在aof重寫或者寫入rdb文件的時候,會執行大量IO,此時對於everysec和always的aof模式來說,執行fsync會造成阻塞過長時間,
no-appendfsync-on-rewrite字段設置為默認設置為no。如果對延遲要求很高的應用,這個字段可以設置為yes,否則還是設置為no,
這樣對持久化特性來說這是更安全的選擇。設置為yes表示rewrite期間對新寫操作不fsync,暫時存在內存中,等rewrite完成后再寫入,
默認為no,建議yes。Linux的默認fsync策略是30秒。可能丟失30秒數據。
auto-aof-rewrite-percentage 100
# aof自動重寫配置。當目前aof文件大小超過上一次重寫的aof文件大小的百分之多少進行重寫,即當aof文件增長到一定大小的時候
Redis能夠調用bgrewriteaof對日志文件進行重寫。當前AOF文件大小是上次日志重寫得到AOF文件大小的二倍(設置為100)時,
自動啟動新的日志重寫過程。
auto-aof-rewrite-min-size 64mb
# 設置允許重寫的最小aof文件大小,避免了達到約定百分比但尺寸仍然很小的情況還要重寫
aof-load-truncated yes
# aof文件可能在尾部是不完整的,當redis啟動的時候,aof文件的數據被載入內存。重啟可能發生在redis所在的主機操作系統宕機后,
尤其在ext4文件系統沒有加上data=ordered選項(redis宕機或者異常終止不會造成尾部不完整現象)出現這種現象,可以選擇讓redis退出,
或者導入盡可能多的數據。如果選擇的是yes,當截斷的aof文件被導入的時候,會自動發布一個log給客戶端然后load。
如果是no,用戶必須手動redis-check-aof修復AOF文件才可以
lua-time-limit 5000
# 如果達到最大時間限制(毫秒),redis會記個log,然后返回error。當一個腳本超過了最大時限。只有SCRIPT KILL和SHUTDOWN NOSAVE可以用。
第一個可以殺沒有調write命令的東西。要是已經調用了write,只能用第二個命令殺。
slowlog-log-slower-than 10000
# slowlog是用來記錄redis運行中執行比較慢的命令耗時。當命令的執行超過了指定時間,就記錄在slowlog中,slowlog保存在內存中,所以沒有IO操作。
執行時間比slowlog-log-slower-than大的請求記錄到slowlog里面,單位是微秒,所以1000000就是1秒。注意,負數時間會禁用慢查詢日志,而0則會強制記錄所有命令。
slowlog-max-len 128
# 慢查詢日志長度。當一個新的命令被寫進日志的時候,最老的那個記錄會被刪掉。這個長度沒有限制。只要有足夠的內存就行。你可以通過 SLOWLOG RESET 來釋放內存。
latency-monitor-threshold 0
# 延遲監控功能是用來監控redis中執行比較緩慢的一些操作,用LATENCY打印redis實例在跑命令時的耗時圖表。只記錄大於等於下邊設置的值的操作。
0的話,就是關閉監視。默認延遲監控功能是關閉的,如果你需要打開,也可以通過CONFIGSET命令動態設置。
notify-keyspace-events ""
# 鍵空間通知使得客戶端可以通過訂閱頻道或模式,來接收那些以某種方式改動了Redis 數據集的事件。因為開啟鍵空間通知功能需要消耗一些 CPU ,所以在默認配置下,該功能處於關閉狀態。
# notify-keyspace-events的參數可以是以下字符的任意組合,它指定了服務器該發送哪些類型的通知:
# K 鍵空間通知,所有通知以 __keyspace@__ 為前綴
# E 鍵事件通知,所有通知以 __keyevent@__ 為前綴
# g DEL 、 EXPIRE 、RENAME 等類型無關的通用命令的通知
# $ 字符串命令的通知
# l 列表命令的通知
# s 集合命令的通知
# h 哈希命令的通知
# z 有序集合命令的通知
# x 過期事件:每當有過期鍵被刪除時發送
# e 驅逐(evict)事件:每當有鍵因為 maxmemory 政策而被刪除時發送
# A 參數 g$lshzxe 的別名
# 輸入的參數中至少要有一個K或者E,否則的話,不管其余的參數是什么,都不會有任何 通知被分發。詳細使用可以參考http://redis.io/topics/notifications
hash-max-ziplist-entries 512
# 數據量小於等於hash-max-ziplist-entries的用ziplist,大於hash-max-ziplist-entries用hash
hash-max-ziplist-value 64
# value大小小於等於hash-max-ziplist-value的用ziplist,大於hash-max-ziplist-value用hash。
list-max-ziplist-size -2
# The highestperforming option is usually -2 (8 Kb size) or -1 (4 Kb size),
# but if your use caseis unique, adjust the settings as necessary.
list-compress-depth 0
set-max-intset-entries 512
# 數據量小於等於set-max-intset-entries用iniset,大於set-max-intset-entries用set。
zset-max-ziplist-entries 128
# 數據量小於等於zset-max-ziplist-entries用ziplist,大於zset-max-ziplist-entries用zset。
zset-max-ziplist-value 64
# value大小小於等於zset-max-ziplist-value用ziplist,大於zset-max-ziplist-value用zset。
hll-sparse-max-bytes 3000
# value大小小於等於hll-sparse-max-bytes使用稀疏數據結構(sparse),大於hll-sparse-max-bytes使用稠密的數據結構(dense)。
一個比16000大的value是幾乎沒用的,建議的value大概為3000。如果對CPU要求不高,對空間要求較高的,建議設置到10000左右。
activerehashing yes
# Redis將在每100毫秒時使用1毫秒的CPU時間來對redis的hash表進行重新hash,可以降低內存的使用。當你的使用場景中,有非常嚴格的實時性需要,
不能夠接受Redis時不時的對請求有2毫秒的延遲的話,把這項配置為no。如果沒有這么嚴格的實時性要求,可以設置為yes,以便能夠盡可能快的釋放內存。
client-output-buffer-limit normal 0 0 0
# 對客戶端輸出緩沖進行限制可以強迫那些不從服務器讀取數據的客戶端斷開連接,用來強制關閉傳輸緩慢的客戶端。
# 對於normalclient,第一個0表示取消hard limit,第二個0和第三個0表示取消soft limit,normal client默認取消限制,因為如果沒有尋問,他們是不會接收數據的。
client-output-buffer-limit slave 256mb 64mb 60
# 對於slaveclient和MONITER client,如果client-output-buffer一旦超過256mb,又或者超過64mb持續60秒,那么服務器就會立即斷開客戶端連接。
client-output-buffer-limit pubsub 32mb 8mb 60
# 對於pubsub client,如果client-output-buffer一旦超過32mb,又或者超過8mb持續60秒,那么服務器就會立即斷開客戶端連接。
hz 10
#redis執行任務的頻率為1s除以hz。
aof-rewrite-incremental-fsync yes
# 在aof重寫的時候,如果打開了aof-rewrite-incremental-fsync開關,系統會每32MB執行一次fsync。這對於把文件寫入磁盤是有幫助的,可以避免過大的延遲峰值。

參考文章:http://www.itnpc.com/news/web/146996222197663.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM