1. 程式人生 > 其它 >redis.conf配置詳解

redis.conf配置詳解

以下是關於Redis cluster配置的詳解,對於常用的配置一定要熟記了解。

# 守護程序模式
daemonize yes

# pid file 修改pidfile指向路徑
pidfile /Users/zhiaiyahong/development/7001/redis_node1.pid

# 指明日誌檔名
logfile "./redis7001.log"

# 監聽埠
port 7001

# 工作目錄
dir /Users/zhiaiyahong/development/7001

# 繫結ip
bind 127.0.0.1

# 持久化資料庫的檔名
dbfilename dump-master.rdb

# 開啟叢集
cluster
-enabled yes # TCP接收佇列長度,受/proc/sys/net/core/somaxconn和tcp_max_syn_backlog這兩個核心引數的影響 tcp-backlog 511 # 一個客戶端空閒多少秒後關閉連線(0代表禁用,永不關閉) timeout 0 # 如果非零,則設定SO_KEEPALIVE選項來向空閒連線的客戶端傳送ACK tcp-keepalive 60 # 指定伺服器除錯等級 # 可能值: # debug (大量資訊,對開發/測試有用) # verbose (很多精簡的有用資訊,但是不像debug等級那麼多) # notice (適量的資訊,基本上是你生產環境中需要的) # warning (只有很重要
/嚴重的資訊會記錄下來) loglevel notice # 設定資料庫個數 databases 16 # 會在指定秒數和資料變化次數之後把資料庫寫到磁碟上 # 900秒(15分鐘)之後,且至少1次變更 # 300秒(5分鐘)之後,且至少10次變更 # 60秒之後,且至少10000次變更 save 900 1 save 300 10 save 60 10000 # 預設如果開啟RDB快照(至少一條save指令)並且最新的後臺儲存失敗,Redis將會停止接受寫操作 # 這將使使用者知道資料沒有正確的持久化到硬碟,否則可能沒人注意到並且造成一些災難 stop-writes-on-bgsave-error yes # 當匯出到 .rdb 資料庫時是否用LZF壓縮字串物件 rdbcompression yes # 版本5的RDB有一個CRC64演算法的校驗和放在了檔案的最後。這將使檔案格式更加可靠。 rdbchecksum yes # 當master服務設定了密碼保護時,slav服務連線master的密碼 masterauth
123456 # 當一個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 # 你可以配置salve例項是否接受寫操作。可寫的slave例項可能對儲存臨時資料比較有用(因為寫入salve # 的資料在同master同步之後將很容易被刪除 slave-read-only yes # 是否在slave套接字傳送SYNC之後禁用 TCP_NODELAY? # 如果你選擇“yes”Redis將使用更少的TCP包和頻寬來向slaves傳送資料。但是這將使資料傳輸到slave # 上有延遲,Linux核心的預設配置會達到40毫秒 # 如果你選擇了 "no" 資料傳輸到salve的延遲將會減少但要使用更多的頻寬 repl-disable-tcp-nodelay no # slave的優先順序是一個整數展示在Redis的Info輸出中。如果master不再正常工作了,哨兵將用它來 # 選擇一個slave提升=升為master。 # 優先順序數字小的salve會優先考慮提升為master,所以例如有三個slave優先順序分別為10,100,25, # 哨兵將挑選優先順序最小數字為10的slave。 # 0作為一個特殊的優先順序,標識這個slave不能作為master,所以一個優先順序為0的slave永遠不會被 # 哨兵挑選提升為master slave-priority 100 # 密碼驗證 # 警告:因為Redis太快了,所以外面的人可以嘗試每秒150k的密碼來試圖破解密碼。這意味著你需要 # 一個高強度的密碼,否則破解太容易了 requirepass 123456 # redis例項最大佔用記憶體,不要用比設定的上限更多的記憶體。一旦記憶體使用達到上限,Redis會根據選定的回收策略(參見: # maxmemmory-policy)刪除key maxmemory 3gb # 最大記憶體策略:如果達到記憶體限制了,Redis如何選擇刪除key。你可以在下面五個行為裡選: # volatile-lru -> 根據LRU演算法刪除帶有過期時間的key。 # allkeys-lru -> 根據LRU演算法刪除任何key。 # volatile-random -> 根據過期設定來隨機刪除key, 具備過期時間的key。 # allkeys->random -> 無差別隨機刪, 任何一個key。 # volatile-ttl -> 根據最近過期時間來刪除(輔以TTL), 這是對於有過期時間的key # noeviction -> 誰也不刪,直接在寫操作時返回錯誤。 maxmemory-policy volatile-lru # 預設情況下,Redis是非同步的把資料匯出到磁碟上。這種模式在很多應用裡已經足夠好,但Redis程序 # 出問題或斷電時可能造成一段時間的寫操作丟失(這取決於配置的save指令)。 # # AOF是一種提供了更可靠的替代持久化模式,例如使用預設的資料寫入檔案策略(參見後面的配置) # 在遇到像伺服器斷電或單寫情況下Redis自身程序出問題但作業系統仍正常執行等突發事件時,Redis # 能只丟失1秒的寫操作。 # # AOF和RDB持久化能同時啟動並且不會有問題。 # 如果AOF開啟,那麼在啟動時Redis將載入AOF檔案,它更能保證資料的可靠性。 appendonly no # aof檔名 appendfilename "appendonly.aof" # fsync() 系統呼叫告訴作業系統把資料寫到磁碟上,而不是等更多的資料進入輸出緩衝區。 # 有些作業系統會真的把資料馬上刷到磁碟上;有些則會盡快去嘗試這麼做。 # # Redis支援三種不同的模式: # # no:不要立刻刷,只有在作業系統需要刷的時候再刷。比較快。 # always:每次寫操作都立刻寫入到aof檔案。慢,但是最安全。 # everysec:每秒寫一次。折中方案。 appendfsync everysec # 如果AOF的同步策略設定成 "always" 或者 "everysec",並且後臺的儲存程序(後臺儲存或寫入AOF # 日誌)會產生很多磁碟I/O開銷。某些Linux的配置下會使Redis因為 fsync()系統呼叫而阻塞很久。 # 注意,目前對這個情況還沒有完美修正,甚至不同執行緒的 fsync() 會阻塞我們同步的write(2)呼叫。 # # 為了緩解這個問題,可以用下面這個選項。它可以在 BGSAVE 或 BGREWRITEAOF 處理時阻止主程序進行fsync()。 # # 這就意味著如果有子程序在進行儲存操作,那麼Redis就處於"不可同步"的狀態。 # 這實際上是說,在最差的情況下可能會丟掉30秒鐘的日誌資料。(預設Linux設定) # # 如果你有延時問題把這個設定成"yes",否則就保持"no",這是儲存持久資料的最安全的方式。 no-appendfsync-on-rewrite yes # 自動重寫AOF檔案 auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb # AOF檔案可能在尾部是不完整的(這跟system關閉有問題,尤其是mount ext4檔案系統時 # 沒有加上data=ordered選項。只會發生在os死時,redis自己死不會不完整)。 # 那redis重啟時load進記憶體的時候就有問題了。 # 發生的時候,可以選擇redis啟動報錯,並且通知使用者和寫日誌,或者load儘量多正常的資料。 # 如果aof-load-truncated是yes,會自動釋出一個log給客戶端然後load(預設)。 # 如果是no,使用者必須手動redis-check-aof修復AOF檔案才可以。 # 注意,如果在讀取的過程中,發現這個aof是損壞的,伺服器也是會退出的, # 這個選項僅僅用於當伺服器嘗試讀取更多的資料但又找不到相應的資料時。 aof-load-truncated yes # Lua 指令碼的最大執行時間,毫秒為單位 lua-time-limit 5000 # Redis慢查詢日誌可以記錄超過指定時間的查詢 slowlog-log-slower-than 10000 # 這個長度沒有限制。只是要主要會消耗記憶體。你可以通過 SLOWLOG RESET 來回收記憶體。 slowlog-max-len 128 # redis延時監控系統在執行時會取樣一些操作,以便收集可能導致延時的資料根源。 # 通過 LATENCY命令 可以列印一些圖樣和獲取一些報告,方便監控 # 這個系統僅僅記錄那個執行時間大於或等於預定時間(毫秒)的操作, # 這個預定時間是通過latency-monitor-threshold配置來指定的, # 當設定為0時,這個監控系統處於停止狀態 latency-monitor-threshold 0 # Redis能通知 Pub/Sub 客戶端關於鍵空間發生的事件,預設關閉 notify-keyspace-events "" # 當hash只有少量的entry時,並且最大的entry所佔空間沒有超過指定的限制時,會用一種節省記憶體的 # 資料結構來編碼。可以通過下面的指令來設定限制 hash-max-ziplist-entries 512 hash-max-ziplist-value 64 # 與hash似,資料元素較少的list,可以用另一種方式來編碼從而節省大量空間。 # 這種特殊的方式只有在符合下面限制時才可以用 list-max-ziplist-entries 512 list-max-ziplist-value 64 # set有一種特殊編碼的情況:當set資料全是十進位制64位有符號整型數字構成的字串時。 # 下面這個配置項就是用來設定set使用這種編碼來節省記憶體的最大長度。 set-max-intset-entries 512 # 與hash和list相似,有序集合也可以用一種特別的編碼方式來節省大量空間。 # 這種編碼只適合長度和元素都小於下面限制的有序集合 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 # HyperLogLog稀疏結構表示位元組的限制。該限制包括 # 16個位元組的頭。當HyperLogLog使用稀疏結構表示 # 這些限制,它會被轉換成密度表示。 # 值大於16000是完全沒用的,因為在該點 # 密集的表示是更多的記憶體效率。 # 建議值是3000左右,以便具有的記憶體好處, 減少記憶體的消耗 hll-sparse-max-bytes 3000 # 啟用雜湊重新整理,每100個CPU毫秒會拿出1個毫秒來重新整理Redis的主雜湊表(頂級鍵值對映表) activerehashing yes # 客戶端的輸出緩衝區的限制,可用於強制斷開那些因為某種原因從伺服器讀取資料的速度不夠快的客戶端 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空閒時使用更多的CPU時,但同時當有多個key # 同時到期會使Redis的反應更靈敏,以及超時可以更精確地處理 hz 10 # 當一個子程序重寫AOF檔案時,如果啟用下面的選項,則檔案每生成32M資料會被同步 aof-rewrite-incremental-fsync yes

總結: