Redis學習三(配置檔案說明)
1. Units(單位)
配置大小單位,開頭定義了一些基本的度量單位,只支援bytes,不支援bit
大小寫不敏感
# Note on units: when memory size is needed, it is possible to specify # it in the usual form of 1k 5GB 4M and so forth: # # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 bytes # 1mb => 1024*1024 bytes # 1g => 1000000000 bytes # 1gb => 1024*1024*1024 bytes # # units are case insensitive so 1GB 1Gb 1gB are all the same.
2. INCLUDES
類似jsp中的include,多例項的情況可以把公用的配置檔案提取出來
# include /path/to/local.conf
# include /path/to/other.conf
3. 網路相關配置
3.1 bind
預設情況bind=127.0.0.1只能接受本機的訪問請求。不寫的情況下,無限制接受任何ip地址的訪問
生產環境肯定要寫你應用伺服器的地址;伺服器是需要遠端訪問的,所以需要將其註釋掉
如果開啟了protected-mode,那麼在沒有設定bind ip且沒有設密碼的情況下,Redis只允許接受本機的響應
#bind 127.0.0.1 -::1
3.2 protected-mode
將本機訪問保護模式設定no
protected-mode no # 預設開啟
3.3 port
埠號,預設 6379
3.4 tcp-backlog
設定tcp的backlog,backlog其實是一個連線佇列,backlog佇列總和=未完成三次握手佇列 + 已經完成三次握手佇列。
在高併發環境下你需要一個高backlog值來避免慢客戶端連線問題。
注意Linux核心會將這個值減小到/proc/sys/net/core/somaxconn的值(128),所以需要確認增大/proc/sys/net/core/somaxconn和/proc/sys/net/ipv4/tcp_max_syn_backlog(128)兩個值來達到想要的效果
3.5 timeout
一個空閒的客戶端維持多少秒會關閉,0表示關閉該功能。即永不關閉。
3.6 tcp-keepalive
對訪問客戶端的一種心跳檢測,每個n秒檢測一次
單位為秒,如果設定為0,則不會進行Keepalive檢測,建議設定成60
4. GENERAL(通用)
4.1 daemonize
是否為後臺程序,設定為yes。守護程序,後臺啟動
4.2 pidfile
存放pid檔案的位置,每個例項會產生一個不同的pid檔案
4.3 loglevel
指定日誌記錄級別,Redis總共支援四個級別:debug、verbose、notice、warning,預設為notice
四個級別根據使用階段來選擇,生產環境選擇notice 或者warning
4.4 logfile
日誌檔名稱
4.5 database
設定庫的數量 預設16,預設資料庫為0,可以使用SELECT
5. security(安全)
5.1 設定密碼
訪問密碼的檢視、設定和取消
在命令中設定密碼,只是臨時的。重啟redis伺服器,密碼就還原了。
永久設定,需要再配置檔案中進行設定。
6. limits(限制)
6.1 maxclients
設定redis同時可以與多少個客戶端進行連線。
預設情況下為10000個客戶端。
如果達到了此限制,redis則會拒絕新的連線請求,並且向這些連線請求方發出“max number of clients reached”以作迴應。
6.2 maxmemory
建議必須設定,否則,將記憶體佔滿,造成伺服器宕機
設定redis可以使用的記憶體量。一旦到達記憶體使用上限,redis將會試圖移除內部資料,移除規則可以通過maxmemory-policy來指定。
但是對於無記憶體申請的指令,仍然會正常響應,比如GET等。如果你的redis是主redis(說明你的redis有從redis),那麼在設定記憶體使用上限時,需要在系統中留出一些記憶體空間給同步佇列快取,只有在你設定的是“不移除”的情況下,才不用考慮這個因素。
6.3 maxmemory-policy
-
volatile-lru:使用LRU演算法移除key,只對設定了過期時間的鍵;(最近最少使用)
-
allkeys-lru:在所有集合key中,使用LRU演算法移除key
-
volatile-random:在過期集合中移除隨機的key,只對設定了過期時間的鍵
-
allkeys-random:在所有集合key中,移除隨機的key
-
volatile-ttl:移除那些TTL值最小的key,即那些最近要過期的key
-
noeviction:不進行移除。針對寫操作,只是返回錯誤資訊
6.4 maxmemory-samples
-
設定樣本數量,LRU演算法和最小TTL演算法都並非是精確的演算法,而是估算值,所以你可以設定樣本的大小,redis預設會檢查這麼多個key並選擇其中LRU的那個。
-
一般設定3到7的數字,數值越小樣本越不準確,但效能消耗越小