redis-4.0.11的配置說明

參考了文檔和別人的解釋,有很多功能沒用到,以及解釋的不購詳細。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

#只允許指定地址訪問
#bind 192.168.1.100 10.0.0.1
#允許其他地址訪問,否則只允許127.0.0.1訪問,如果配置了bind和密碼,則protected-mode無效。
protected-mode no
#端口
port 7379
#tcp最大連接數(不是客戶端最大連接數,可以理解爲待連接,正在排隊),因爲該配置會同時受到linux的限制,所以如果想要它有效要確保Linux的somaxconn和tcp_max_syn_backlog比它大
tcp-backlog 511
#客戶端連接空閒多少秒後關閉連接,0永不關閉,一般設置爲5分鐘
timeout 300
#如果值非0,單位是秒,表示將週期性的使用SO_KEEPALIVE檢測客戶端是否還處於健康狀態,避免服務器一直阻塞,官方給出的建議值是60S。
tcp-keepalive 300
#守護模式
daemonize yes
#如果你想通過upstart or systemd進行管理redis,則可以配置多個模式,默認爲NO。
supervised no
#PID文件路徑
pidfile "/home/session/redis/conf/redis_slave1.pid"
#master的請求密碼
masterauth "phFUND_linux_redis"
#自己的請求密碼
requirepass "phFUND_linux_redis"
#日誌級別,如果的測試可以用debug,平時用notice就夠了。
loglevel notice
#日誌的路徑,如果不配置該項則會把日誌打印到控制檯
logfile "/home/session/redis/logs/redis_7379.log"
#redis沒有和oracle一樣多用戶的概念,不同客戶端可以訪問屬於自己的key,單又不影響使用。默認爲 DB 0,select <dbid> 命令選擇一個不同的數據庫,但是 dbid 必須是一個介於 0 到 databasees - 1 之間的值.
databases 16
#redis啓動時是否顯示log。
always-show-logo yes
#根據給定的時間間隔和寫入次數將數據保存到磁盤
# 900秒(15分鐘)之後,且至少1次變更
# 300秒(5分鐘)之後,且至少10次變更
# 60秒之後,且至少10000次變更
save 900 1
save 300 10
save 60 10000
# 默認如果開啓RDB快照(至少一條save指令)並且最新的後臺保存失敗,Redis將會停止接受寫操作
# 這將使用戶知道數據沒有正確的持久化到硬盤,否則可能沒人注意到並且造成一些災難
# 如果後臺保存進程重新啓動工作了,redis 也將自動的允許寫操作
stop-writes-on-bgsave-error yes
# 當導出到 .rdb 數據庫時是否用LZF壓縮字符串對象,默認都設爲 yes
rdbcompression yes
# 是否校驗rdb文件,版本5的RDB有一個CRC64算法的校驗和放在了文件的最後。這將使文件格式更加可靠。
rdbchecksum yes
# 持久化數據庫的文件名
dbfilename "dump_slave1.rdb"
# 工作目錄
# 例如上面的 dbfilename 只指定了文件名,但是它會寫入到這個目錄下。這個配置項一定是個目錄,而不能是文件名
dir "/home/session/redis/data"
# 當一個slave失去和master的連接,或者同步正在進行中,slave的行爲可以有兩種表現:
#
# 1) 如果 slave-serve-stale-data 設置爲 "yes" (默認值),slave會繼續響應客戶端請求,
# 可能是正常數據,或者是過時了的數據,也可能是還沒獲得值的空數據。
# 2) 如果 slave-serve-stale-data 設置爲 "no",slave會回覆"正在從master同步
# (SYNC with master in progress)"來處理各種請求,除了 INFO 和 SLAVEOF 命令。
slave-serve-stale-data yes
#爲slave時,只讀模式
slave-read-only yes
#是否使用socket方式複製數據。
#目前redis複製提供兩種方式,disk和socket。
#如果新的slave連上來或者重連的slave無法部分同步,就會執行全量同步,master會生成rdb文件。
#有2種方式:disk方式是master創建一個新的進程把rdb文件保存到磁盤,再把磁盤上的rdb文件傳遞給slave。
#socket是master創建一個新的進程,直接把rdb文件以socket的方式發給slave。disk方式的時候,
#當一個rdb保存的過程中,多個slave都能共享這個rdb文件。socket的方式就的一個個slave順序複製。在磁盤速度緩慢,網速快的情況下推薦用socket方式。
repl-diskless-sync no

#diskless複製的延遲時間,防止設置爲0。一旦複製開始,節點不會再接收新slave的複製請求直到下一個rdb傳輸。所以最好等待一段時間,等更多的slave連上來。
repl-diskless-sync-delay 5

# 是否在slave套接字發送SYNC之後禁用 TCP_NODELAY?
# 如果你選擇“yes”Redis將使用更少的TCP包和帶寬來向slaves發送數據。但是這將使數據傳輸到slave上有延遲,Linux內核的默認配置會達到40毫秒
# 如果你選擇了 "no" 數據傳輸到salve的延遲將會減少但要使用更多的帶寬
repl-disable-tcp-nodelay no
#優先級,數值最小的優先級高,如果爲0則不能升級爲master
slave-priority 100
#當redis設置了被動淘汰機制時,啓用延遲刪除功能,他會把元素大於64的集合鍵交給BIO(Background I/O)處理。
#避免了長時間刪除鍵帶來的阻塞和性能影響。因爲redis是單線程的所以,如果刪除一個鍵時間太長,其他的指令會被阻塞。
lazyfree-lazy-eviction no
#對設置了TTL過期時間的key使用該策略
lazyfree-lazy-expire no
#針對有些指令在處理已存在的鍵時,會帶有一個隱式的DEL鍵的操作。
#如rename命令,當目標鍵已存在,redis會先刪除目標鍵,如果這些目標鍵是一個big key,那就會引入阻塞刪除的性能問題。 此參數設置就是解決這類問題,建議可開啓。
lazyfree-lazy-server-del no
#針對slave進行全量數據同步,slave在加載master的RDB文件前,會運行flushall來清理自己的數據場景,
#參數設置決定是否採用異常flush機制。如果內存變動不大,建議可開啓。可減少全量同步耗時,從而減少主庫因輸出緩衝區爆漲引起的內存使用增長。
slave-lazy-flush no

#AOF是一種提供了更可靠的替代持久化模式,例如使用默認的數據寫入文件策略。在遇到像服務器斷電或單寫情況下Redis自身進程出問題但操作系統仍正常運行等突發事件時Redis能只丟失1秒的寫操作。
#如果AOF開啓,那麼在啓動時Redis將加載AOF文件,它更能保證數據的可靠性。
appendonly no
# aof文件名
appendfilename "appendonly_slave1.aof"
#AOF的數據同步策略
# no:不要立刻刷,只有在操作系統需要刷的時候再刷。比較快。
# always:每次寫操作都立刻寫入到aof文件。慢,但是最安全。
# everysec:每秒寫一次。折中方案。
appendfsync everysec

#AOF和RDB執行重寫時,會產生大量IO導致可能阻塞新的寫入操作。如果設置爲yes,則在rewrite期間(30S)不持久化,但可能丟失數據,一般默認爲no。
no-appendfsync-on-rewrite no
#aof自動重寫配置。當目前aof文件大小超過上一次重寫的aof文件大小的百分之多少進行重寫,設置爲100,意思是超過100百分百,也就是2倍進行重寫。
auto-aof-rewrite-percentage 100
#設置允許重寫的最小aof文件大小,避免了達到約定百分比但尺寸仍然很小的情況還要重寫
auto-aof-rewrite-min-size 64mb

#如果因爲其他原因,比如系統斷電導致文件不完整。
#設置爲no的時候,需要用戶手動檢查文件的完整性(redis-check-aof)。如果爲YES則會通知客戶,然後自己嘗試儘可能的加載數據。
aof-load-truncated yes
#4.0 新特性 啓用RDB-AOF混合持久化
aof-use-rdb-preamble no
#lua腳本可執行的最大時間爲5000毫秒
lua-time-limit 5000
#慢查詢的記錄長度,這個大小可以自己配置,是記錄在redis的內存中,沒有上限設置。可以在redis-cli 中執行slowlog get來獲取,又可以通過SLOWLOG reset來清除。
slowlog-max-len 128

# redis延時監控系統在運行時會採樣一些操作,以便收集可能導致延時的數據根源。
# 通過 LATENCY命令 可以打印一些圖樣和獲取一些報告,方便監控
# 這個系統僅僅記錄那個執行時間大於或等於預定時間(毫秒)的操作,
# 這個預定時間是通過latency-monitor-threshold配置來指定的,
# 當設置爲0時,這個監控系統處於停止狀態
latency-monitor-threshold 0

# Redis能通過 發佈/訂閱功能 告知客戶端關於鍵空間發生的事件(比如,過期,刪除等),默認關閉,如果需要這個功能再仔細研究。
notify-keyspace-events ""

# 當hash只有少量的entry時,並且最大的entry所佔空間沒有超過指定的限制時,會用一種節省內存的
# 數據結構來編碼。可以通過下面的指令來設定限制
#表示當hash項(field,value)數>512即ziplist項>1024的時候轉爲dict
hash-max-ziplist-entries 512
#表示當hash中的value長度超過64的時候轉爲dict。
hash-max-ziplist-value 64

#和上面hash一樣的用法,也是用來做數據結構優化的。
list-max-ziplist-size -2
list-compress-depth 0

#數據量小於等於set-max-intset-entries用iniset,大於set-max-intset-entries用set。
set-max-intset-entries 512
#和上面hash一樣的用法,也是用來做數據結構優化的。
zset-max-ziplist-entries 128
zset-max-ziplist-value 64

#value大小小於等於hll-sparse-max-bytes使用稀疏數據結構(sparse),大於hll-sparse-max-bytes使用稠密的數據結構(dense)。
#一個比16000大的value是幾乎沒用的,建議的value大概爲3000。如果對CPU要求不高,對空間要求較高的,建議設置到10000左右。
hll-sparse-max-bytes 3000

#Redis將在每100毫秒時使用1毫秒的CPU時間來對redis的hash表進行重新hash,可以降低內存的使用。如果請求多時效性要求高可以配置爲no。
activerehashing yes
#對客戶端輸出緩衝進行限制可以強迫那些不從服務器讀取數據的客戶端斷開連接,用來強制關閉傳輸緩慢的客戶端。
client-output-buffer-limit normal 0 0 0
#對於slave client和MONITER client,如果client-output-buffer一旦超過256mb,又或者超過64mb持續60秒,那麼服務器就會立即斷開客戶端連接
client-output-buffer-limit slave 256mb 64mb 60
#對於pubsub client,如果client-output-buffer一旦超過32mb,又或者超過8mb持續60秒,那麼服務器就會立即斷開客戶端連接。
client-output-buffer-limit pubsub 32mb 8mb 60

#redis執行任務的頻率爲1s除以hz。
hz 10
#在aof重寫的時候,如果打開了aof-rewrite-incremental-fsync開關,系統會每32MB執行一次fsync。這對於把文件寫入磁盤是有幫助的,可以避免過大的延遲峯值。
aof-rewrite-incremental-fsync yes

# Generated by CONFIG REWRITE
maxclients 4064
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章