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