redis設定檔詳解

來源:互聯網
上載者:User

標籤:redis、redis設定檔詳解、redis設定檔

./redis-server /opt/redis/redis_6379.conf#注意為了讀取設定檔,必須使用開始與檔案路徑作為第一個參數include /opt/redis/redis-common.conf#可以擴充定製設定檔。(如果需要該參數應該放置於最後一行)daemonize yes#是否以後台進程運行,預設為nopidfile /opt/redis/run/redis_6379.pid#如以後台進程運行,則需指定一個pid檔案及路徑。port 6379#監聽連接埠,預設為6379tcp-backlog 511#在高並發的環境中,為避免用戶端的串連緩慢問題,需要設定一個高速後台日誌,Linux 核心預設值很小需要修改 /proc/sys/net/core/somaxconn 對應的值。bind 0.0.0.0#綁定主機IP,預設值為127.0.0.1(這裡寫為4個0方便應用程式訪問)timeout 0#設定用戶端串連時的逾時時間,單位為秒。當用戶端在這段時間內沒有發出任何指令,那麼關閉該串連#0 是關閉此設定tcp-keepalive 0#在 Linux 上,指定值(秒)用於發送 ACKs 的時間。注意關閉串連需要雙倍的時間。預設為 0 loglevel notice#指定日誌記錄層級,生產環境推薦 notice#Redis 總共支援四個層級: debug 、 verbose 、 notice 、 warning ,預設為 verbose#debug     記錄很多資訊,用於開發與測試#varbose   有用的資訊,不像 debug 會記錄那麼多#notice    普通的 verbose ,常用於生產環境#warning   只有非常重要或者嚴重的資訊會記錄到日誌logfile "/var/log/redis/redis_6379.log"#配置 log 檔案地址#預設值為 stdout ,標準輸出,若後台模式會輸出到 /dev/null 。databases 16#可用資料庫數#預設值為 16 ,預設資料庫為 0 。save 900 1save 300 10save 60 10000#儲存資料到磁碟,在多長時間內,有多少次更新操作,就將資料同步到資料檔案 rdb。#相當於條件觸發抓取快照,這個可以多個條件配合#比如預設設定檔中的設定,就設定了三個條件#save 900 1  900 秒內至少有 1 個 key 被改變#save 300 10  300 秒內至少有 300 個 key 被改變#save 60 10000  60 秒內至少有 10000 個 key 被改變stop-writes-on-bgsave-error yes#後台儲存錯誤停止寫。rdbcompression yes#儲存至本機資料庫時(持久化到dump.rdb檔案)是否壓縮資料,預設為 yesrdbchecksum yes#是否校正rdb檔案.dbfilename dump_6379.rdb#本地持久化資料庫檔案名,預設值為 dump.rdbdir /opt/redis/data#資料庫鏡像備份的檔案放置的路徑。#這裡的路徑跟檔案名稱要分開配置是因為 redis 在進行備份時,先會將當前資料庫的狀態寫入到一個臨時檔案中,等備份完成,#再把該該臨時檔案替換為上面所指定的檔案,而這裡的臨時檔案和上面所配置的備份檔案都會放在這個指定的路徑當中。#AOF 檔案也會存放在這個目錄下面#注意這裡必須制定一個目錄而不是檔案slaveof <masterip> <masterport>#設定該資料庫為其他資料庫的從資料庫時啟用該參數。 #設定當本機為slav服務時,設定 master 服務的 IP 地址及連接埠,在 Redis 啟動時,它會自動從 master 進行資料同步masterauth <master-password>#slave服務串連master的密碼slave-serve-stale-data yes#當從庫同主機失去串連或者複製進行中,從機庫有兩種運行方式:#1)如果 slave-serve-stale-data 設定為 yes( 預設設定 ) ,從庫會繼續響應用戶端的請求#2)如果 slave-serve-stale-data 是指為 no ,出去 INFO 和 SLAVOF 命令之外的任何請求都會返回一個錯誤 "SYNC with master in progress"slave-read-only yes#配置 slave 執行個體是否接受寫。寫 slave 對儲存短暫資料(在同 master資料同步後可以很容易地被刪除)是有用的,但未配置的情況下,用戶端寫可能會發送問題。repl-ping-slave-period 10#從庫會按照一個時間間隔向主庫發送 PINGs. 可以通過 repl-ping-slave-period 設定這個時間間隔,預設是 10 秒repl-timeout 60#repl-timeout  設定主庫批量資料轉送時間或者 ping 回複時間間隔,預設值是 60 秒# 一定要確保 repl-timeout 大於 repl-ping-slave-periodrepl-diskless-sync norepl-diskless-sync-delay 5repl-disable-tcp-nodelay no#在 slave socket 的 SYNC 後禁用 TCP_NODELAY#如果選擇“ yes ” ,Redis 將使用一個較小的數字 TCP 資料包和更少的頻寬將資料發送到 slave , 但是這可能導致資料發送到 slave 端會有延遲 , 如果是 Linux kernel 的預設配置,會達到 40 毫秒 .#如果選擇 "no",則發送資料到 slave 端的延遲會降低,但將使用更多的頻寬用於複製.repl-backlog-size 1mb#設定複製的後台日誌大小。#複製的後台日誌越大, slave 中斷連線及後來可能執行部分複製花的時間就越長。#後台日誌在至少有一個 slave 串連時,僅僅分配一次。repl-backlog-ttl 3600#在 master 不再串連 slave 後,後台日誌將被釋放。下面的配置定義從最後一個 slave 中斷連線後需要釋放的時間(秒).#0意味著從不釋放後台日誌slave-priority 100#如果 master 不能再正常工作,那麼會在多個 slave 中,選擇優先值最小的一個 slave 提升為 master ,優先值為 0 表示不能提升為 mastermin-slaves-to-write 0min-slaves-max-lag 10#如果少於 N 個 slave 串連,且延遲時間 <=M 秒,則 master 可配置停止接受寫操作。#例如需要至少 3 個 slave 串連,且延遲 <=10 秒的配置:#設定 0 為禁用#預設 min-slaves-to-write 為 0 (禁用),min-slaves-max-lag 為 10requirepass foobared#設定用戶端串連後進行任何其他指定前需要使用的密碼。#警告:因為 redis 速度相當快,所以在一台比較好的伺服器下,一個外部的使用者可以在一秒鐘進行 150K 次的密碼嘗試,這意味著你需要指定非常非常強大的密碼來防止暴力破解rename-command CONFIG ""#命令重新命名 .#在一個共用環境下可以重新命名相對危險的命令。比如把 CONFIG 重名為一個不容易猜測的字元。#舉例 :#rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52#如果想刪除一個命令,直接把它重新命名為一個Null 字元 "" 即可,如下:maxclients 10000#設定同一時間最大用戶端串連數,預設無限制,#Redis 可以同時開啟的用戶端串連數為 Redis 進程可以開啟的最大檔案描述符數,#如果設定  maxclients 0 ,表示不作限制。#當用戶端串連數到達限制時, Redis 會關閉新的串連並向用戶端返回 max number of clients reached 錯誤資訊maxmemory 100M#指定Redis最大記憶體限制,Redis 在啟動時會把資料載入到記憶體中,達到最大記憶體後,Redis 會按照清除策略嘗試清除已到期的Key#如果Redis依照策略清除後無法提供足夠空間,或者原則設定為 ”noeviction” ,則使用更多空間的命令將會報錯,例如 SET, LPUSH 等。但仍然可以進行讀取操作#注意:Redis 新的 vm 機制,會把 Key 存放記憶體, Value 會存放在 swap 區該選項對 LRU 策略很有用。#maxmemory 的設定比較適合於把 redis 當作於類似 memcached 的緩衝來使用,而不適合當做一個真實的 DB 。#當把 Redis 當做一個真實的資料庫使用的時候,記憶體使用量將是一個很大的開銷######當記憶體達到最大值的時候 Redis 會選擇刪除哪些資料?有五種方式可供選擇volatile-lru -> remove the key with an expire set using an LRU algorithm#volatile-lru ->  利用 LRU 演算法移除設定過到期時間的 key (LRU: 最近使用  Least RecentlyUsed )allkeys-lru -> remove any key according to the LRU algorithm#allkeys-lru ->  利用 LRU 演算法移除任何 keyvolatile-random -> remove a random key with an expire set#volatile-random ->  移除設定過到期時間的隨機 keyallkeys-random -> remove a random key, any key#allkeys-random -> 隨機刪除keyvolatile-ttl -> remove the key with the nearest expire time (minor TTL)#volatile-ttl ->  移除即將到期的 key(minor TTL)noeviction -> don\‘t expire at all, just return an error on write operations.#noeviction ->  不移除任何key,只是返回一個寫錯誤maxmemory-policy noeviction #注意:對於上面的策略,如果沒有合適的 key 可以移除,當寫的時候 Redis 會返回一個錯誤#預設是:volatile-lrumaxmemory-samples 3#LRU  和  minimal TTL 演算法都不是精準的演算法,但是相對精確的演算法 ( 為了節省記憶體 ) ,隨意你可以選擇樣本大小進行檢測。#Redis 預設的灰選擇 3 個樣本進行檢測,你可以通過 maxmemory-samples 進行設定appendonly yes#預設情況下,redis會在後台非同步把資料庫鏡像備份到磁碟,但是該備份是非常耗時的,而且備份也不能很頻繁,如果發生諸如拉閘限電、拔插頭等狀況,那麼將造成比較大範圍的資料丟失。#所以 redis 提供了另外一種更加高效的Database Backup及災難恢複方式。#開啟 append only 模式之後,redis會把所接收到的每一次寫操作請求都追加到 appendonly.aof 檔案中,當redis 重新啟動時,會從該檔案恢複出之前的狀態。#但是這樣會造成 appendonly.aof 檔案過大,所以 redis 還支援了 BGREWRITEAOF 指令,對 appendonly.aof 進行重新整理。#你可以同時開啟 asynchronous dumps 和  AOFappendfilename "appendonly.aof"#AOF 檔案名稱( 預設 : "appendonly.aof")appendfsync everysec#Redis 支援三種同步 AOF 檔案的策略 :#no:不fsync,系統去操作決定同執行時間.(速度快的方式).#always:always 表示每次有寫操作都進行同步(最安全的方式).#everysec:表示對寫操作進行累積,每秒同步一次(適中的方式).#預設是 "everysec",按照速度和安全折中這是最好的。#如果想讓 Redis 能更高效的運行,你也可以設定為 "no",讓作業系統決定什麼時候去執行.#或者相反想讓資料更安全你也可以設定為 "always"#如果不確定就用  "everysec".no-appendfsync-on-rewrite yes#AOF 原則設定為 always 或者 everysec 時,幕後處理進程 ( 後台儲存或者 AOF 日誌重寫 ) 會執行大量的 I/O 操作#在某些 Linux 配置中會阻止過長的 fsync() 請求。注意現在沒有任何修複,即使 fsync 在另外一個線程進行處理#為了減緩這個問題,可以設定下面這個參數 no-appendfsync-on-rewriteauto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mb#AOF  自動重寫#當 AOF 檔案增長到一定大小的時候 Redis 能夠調用BGREWRITEAOF對記錄檔進行重寫#它是這樣工作的:Redis會記住上次進行些日誌後檔案的大小(如果從開機以來還沒進行過重寫,那日子大小在開機的時候確定 )#基礎大小會同現在的大小進行比較。如果現在的大小比基礎大小大制定的百分比,重寫功能將啟動#同時需要指定一個最小大小用於 AOF 重寫,這個用於阻止即使檔案很小但是增長幅度很大也去重寫 AOF 檔案的情況#設定  percentage 為 0 就關閉這個特性aof-load-truncated yeslua-time-limit 5000#一個 Lua 指令碼最長的執行時間為 5000 毫秒( 5 秒),如果為 0 或負數表示無限執行時間.cluster-enabled yes#開啟redis叢集。cluster-config-file nodes-6379.confcluster-node-timeout 15000cluster-migration-barrier 1slowlog-log-slower-than 10000#Redis Slow Log  記錄超過特定執行時間的命令。執行時間不包括 I/O 計算比如串連用戶端,返回結果等,只是命令執行時間#可以通過兩個參數設定 slow log:一個是告訴 Redis 執行超過多少時間被記錄的參數 slowlog-log-slower-than( 微妙 ) ,#另一個是 slow log 的長度。當一個新命令被記錄的時候最早的命令將被從隊列中移除#下面的時間以微妙為單位,因此 1000000 代表一秒。#注意指定一個負數將關閉慢日誌,而設定為 0 將強制每個命令都會記錄slowlog-max-len 128#對日誌長度沒有限制,只是要注意它會消耗記憶體可以通過  SLOWLOG RESET 回收被慢日誌消耗的記憶體#推薦使用預設值128,當慢日誌超過 128 時,最先進入隊列的記錄會被踢出.latency-monitor-threshold 0notify-keyspace-events ""#預設所用的通知被禁用,因為使用者通常不需要改特性,並且該特性會有效能損耗。#注意如果你不指定至少 K 或 E 之一,不會發送任何事件。hash-max-ziplist-entries 512hash-max-ziplist-value 64#當 hash 中包含超過指定元素個數並且最大的元素沒有超過臨界時,#hash 將以一種特殊的編碼方式(大大減少記憶體使用量)來儲存,這裡可以設定這兩個臨界值#Redis Hash 對應 Value 內部實際就是一個 HashMap ,實際這裡會有 2 種不同實現,#這個 Hash 的成員比較少時 Redis 為了節省記憶體會採用類似一維數組的方式來緊湊儲存,而不會採用真正的 HashMap 結構,對應的 valueredisObject 的 encoding 為 zipmap,#當成員數量增大時會自動轉成真正的 HashMap, 此時 encoding 為 ht.list-max-ziplist-entries 512list-max-ziplist-value 64#和 Hash 一樣,多個小的 list 以特定的方式編碼來節省空間的。#list 資料類型節點值大小小於多少位元組會採用緊湊儲存格式。set-max-intset-entries 512#set 資料類型內部資料如果全部是數值型,且包含多少節點以下會採用緊湊格式儲存。zset-max-ziplist-entries 128zset-max-ziplist-value 64#和 hashe 和 list 一樣 , 排序的 set 在指定的長度內以指定編碼方式儲存以節省空間的#zsort 資料類型節點值大小小於多少位元組會採用緊湊儲存格式。hll-sparse-max-bytes 3000activerehashing yes#Redis 將在每 100 毫秒時使用 1 毫秒的 CPU 時間來對 redis 的 hash 表進行重新 hash ,可以降低記憶體的使用#當你的使用情境中,有非常嚴格的即時性需要,不能夠接受 Redis 時不時的對請求有 2 毫秒的延遲的話,把這項配置為 no 。#如果沒有這麼嚴格的即時性要求,可以設定為 yes ,以便能夠儘可能快的釋放記憶體client-output-buffer-limit normal 0 0 0client-output-buffer-limit slave 256mb 64mb 60client-output-buffer-limit pubsub 32mb 8mb 60#用戶端的輸出緩衝區的限制,因為某種原因用戶端從伺服器讀取資料的速度不夠快,#可用於強制中斷連線(一個常見的原因是一個發布 / 訂閱用戶端消費訊息的速度無法趕上生產它們的速度)。#可以三種不同用戶端的方式進行設定:#normal ->  正常用戶端#slave  -> slave 和 MONITOR 用戶端#pubsub ->  至少訂閱了一個 pubsub channel 或 pattern 的用戶端#每個 client-output-buffer-limit 文法 :#client-output-buffer-limit <class><hard limit> <soft limit> <soft seconds>#一旦達到硬限制用戶端會立即斷開,或者達到軟式節流並保持達成的指定秒數(連續)。#例如,如果硬限制為 32 MB和軟式節流為 16 MB /10 秒,用戶端將會立即斷開#如果輸出緩衝區的大小達到 32 MB,用戶端達到 16 MB和連續超過了限制 10 秒,也將中斷連線。#預設 normal 用戶端不做限制,因為他們在一個請求後未要求時(以推的方式)不接收資料,#只有非同步用戶端可能會出現請求資料的速度比它可以讀取的速度快的情境。#把硬限制和軟式節流都設定為 0 來禁用該特性hz 10#Redis 調用內建函式來執行許多背景工作,如關閉用戶端逾時的串連,清除到期的 Key ,等等。#不是所有的任務都以相同的頻率執行,但 Redis 依照指定的“ Hz ”值來執行檢查任務。#預設情況下,“ Hz ”的被設定為 10 。#提高該值將在 Redis 空閑時使用更多的 CPU 時,但同時當有多個 key 同時到期會使 Redis 的反應更靈敏,以及逾時可以更精確地處理。#範圍是 1 到 500 之間,但是值超過 100 通常不是一個好主意。#大多數使用者應該使用 10 這個預設值,只有在非常低的延遲的情況下有必要提高最大到 100 。aof-rewrite-incremental-fsync yes#當一個子節點重寫 AOF 檔案時,如果啟用此選項,則檔案每產生 32M 資料進行同步.

新手上路,不恰之處,懇請指出,不勝感謝

本文出自 “小張的部落格” 部落格,請務必保留此出處http://xiaozhangit.blog.51cto.com/3432391/1734714

redis設定檔詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.