Redis:redis.conf配置文件介紹

《Redis:簡介與安裝》中我們介紹瞭如何在Linux服務器上安裝Redis,其中在Redis的解壓目錄下有個很重要的配置文件redis.conf不知道大家是否還有印象。

在這裏插入圖片描述

在實際使用Redis的過程中,很多功能的配置都是在此文件中完成的。我們今天的重點就是說說這個配置文件裏都有些什麼。

1. 開頭說明

在這裏插入圖片描述

開頭部分主要描述了這個文件是幹嘛的,以及Redis必須通過向redis-server傳入該配置文件的路徑才能啓動。比如:./redis-server /path/to/redis.conf。緊接着還給出提示若我們需要使用內存大小時,可以指定單位,通常是以k、gb、m的形式出現,並且這些單位是不區分大小寫的。

2. INCLUDES

在這裏插入圖片描述

我們知道Redis只有一個配置文件,但如果是多個人進行開發維護,那麼就需要多個這樣的配置文件。Redis針對這種場景,提供了include關鍵字將其他配置文件引入進來,比如:include /path/to/local.conf

需要注意的是: 如果將include寫在redis.conf文件的最開始,那麼後面的配置會覆蓋引入文件的配置,即redis.conf的配置優先級是更高的。但如果想以引入文件的配置作爲最終生效的配置,那麼需要將include配置寫在redis.conf文件的末尾。

3. MODULES

在這裏插入圖片描述

模塊擴展功能是在redis4.0上新增出來的,我們通過這裏的loadmodule配置引入自定義模塊來新增一些功能。比如新增一種數據類型。

4. NETWORK

在這裏插入圖片描述

注意:該段配置較長,截圖只是部分內容,完整內容參考redis.conf

(1)bind:用於綁定redis服務器網卡IP,默認爲127.0.0.1,只能通過本機的客戶端連接redis服務,而無法通過遠程連接。如果允許遠程連接,則可以將該配置項設置爲空。

(2)port:設置redis進程的端口號,默認是6379。

(3)timeout:設置客戶端連接的超時時間,單位爲秒。當客戶端在這段時間內沒有發出任何指令,那麼關閉該連接。默認值爲0,表示不關閉。

(4)tcp-keepalive:週期性的檢查客戶端是否處於健康狀態,避免服務器一直阻塞,單位爲秒。默認爲300,如果設置爲0,則不會週期性的檢測。

(5)protected-mode:該配置項設置外部網絡連接redis服務,設置方式如下:

  • 關閉protected-mode模式,此時外部網絡可以直接訪問。
  • 開啓protected-mode保護模式,需配置bind ip或者設置訪問密碼。

5. GENERAL

在這裏插入圖片描述

(1)daemonize:設置redis是否在後臺啓動,默認值爲 no。

(2)pidfile:設置PID文件路徑,當redis作爲守護進程啓動時,它會把pid默認寫到/var/run/redis_6379.pid文件裏面。

(3)loglevel :定義日誌級別。默認值爲notice,可選值有以下4種:

  • debug(記錄大量日誌信息,適用於開發、測試階段)
  • verbose(較多日誌信息)
  • notice(適量日誌信息,適用於生產環境)
  • warning(僅記錄部分重要、關鍵信息)

(4)logfile:配置log文件地址,默認打印在命令行終端的窗口上。

(5)databases:設置數據庫的數量,默認爲16。默認爲第0個數據庫,客戶端可通過select <dbid>命令選擇一個數據庫。

6. SNAPSHOTTING

在這裏插入圖片描述

(1)save:設置觸發RDB方式的持久化條件,默認如下配置:

save 900 1:表示900 秒內如果至少有 1 個 key 的值變化,則保存
save 300 10:表示300 秒內如果至少有 10 個 key 的值變化,則保存
save 60 10000:表示60 秒內如果至少有 10000 個 key 的值變化,則保存

如果我們只是使用Redis的緩存功能,不需要對數據進行持久化,那麼可以註釋掉所有的 save 行來停用持久化功能。

(2)stop-writes-on-bgsave-error:默認值爲yes。當啓用了RDB並且最後一次保存數據失敗時,Redis是否停止寫入數據。

(3)rdbcompression:默認值是yes。用於表示持久化時,寫入磁盤的快照文件是否需要壓縮處理。

(4)rdbchecksum:默認值是yes。在存儲快照後,我們還可以讓redis進行數據校驗,但這樣做會增加更多的性能消耗,如果希望獲取到最大的性能提升,可以關閉此功能。

(5)dbfilename:設置快照的文件名,默認是dump.rdb

(6)dir:設置快照文件的存放路徑。

7. REPLICATION

在這裏插入圖片描述

(1)replica-serve-stale-data:默認值爲yes。當從節點與主節點斷開連接,或者正在同步數據時,從節點可能會有兩種表現:

  • 如果爲yes,從節點可以繼續響應客戶端請求,但返回的數據可能是過時的。
  • 如果爲no,從節點在以上情況不再響應客戶端請求,此時會返回"SYNC with master in progress" 的錯誤。

(2)replica-read-only:配置Redis的從節點是否只讀,默認值爲yes。

(3)repl-diskless-sync:主從數據複製是否使用無硬盤複製功能,默認值爲no。

8. SECURITY

在這裏插入圖片描述

(1)rename-command:命令重命名,通常用於將一些重要命令重命名,從而起到安全保護的作用。例如:

  • flushdb(清空數據庫)
  • flushall(清空所有記錄)
  • config(客戶端連接後可配置服務器)
  • keys(客戶端連接後可查看所有存在的鍵)

可通過rename-command FLUSHALL ""禁用命令,也可以保留命令但是不能輕易使用,如:rename-command FLUSHALL abcdefg。這樣的話,重啓服務器後則需要使用新命令來執行,否則服務器會報錯unknown command。

(2)requirepass:設置redis的連接密碼,比如:requirepass 123

9. CLIENTS

在這裏插入圖片描述

(1)maxclients:設置客戶端最大併發連接數,默認無限制。如果設置maxclients爲0,表示不作限制。當客戶端連接數到達限制時,Redis會關閉新的連接並向客戶端返回max number of clients reached錯誤信息。

10. MEMORY MANAGEMENT

在這裏插入圖片描述

(1)maxmemory:設置Redis的最大內存,如果設置爲0,表示不作限制。該配置項通常是配合下面介紹的maxmemory-policy參數一起使用。

(2)maxmemory-policy :當內存使用達到maxmemory設置的最大值時,redis使用的內存清除策略。有以下幾種可以選擇:

  • volatile-lru :使用LRU算法移除即將過期的key,只針對設置了過期時間的key。
  • allkeys-lru :使用LRU算法移除即將過期的key。
  • volatile-random:隨機移除即將過期的key,只針對設置了過期時間的key。
  • allkeys-random:隨機移除即將過期的key。
  • volatile-ttl:移除即將過期的key。
  • noeviction:不移除任何key,直接返回一個寫錯誤,默認選項。

(3)replica-ignore-maxmemory:默認值爲yes,是否忽略從節點的內存限制。

11. APPEND ONLY MODE

在這裏插入圖片描述

(1)appendonly:默認情況下redis使用的是RDB方式持久化,這種方式在許多場景中已經足夠用了。但是這種方式可能會導致可能有幾分鐘的數據丟失,而AOF是另一種持久化方式, 可以提供更好的持久化特性。Redis會把寫命令都寫入appendonly.aof文件,如果啓動AOF,每次啓動時,Redis都會先把這個文件的數據讀入內存裏,而忽略RDB文件。默認值爲no。

(2)appendfilename:aof文件名,默認是appendonly.aof

(3)appendfsync:aof持久化策略的配置,默認值爲everysec

  • no:表示不執行fsync,由操作系統保證數據同步到磁盤,速度最快;
  • always:表示每次寫入都執行fsync,以保證數據同步到磁盤;
  • everysec:表示每秒執行一次fsync,可能會導致丟失這1s數據。

(4)no-appendfsync-on-rewrite:在aof重寫或者寫入rdb文件的時候,會執行大量IO,此時對於everysec和always的aof模式來說,執行fsync會造成阻塞過長時間,no-appendfsync-on-rewrite字段設置爲默認設置爲no。如果對延遲要求很高的應用,這個字段可以設置爲yes,這樣對持久化特性來說這是更安全的選擇。設置爲yes表示rewrite期間對新寫操作不fsync,暫時存在內存中,等rewrite完成後再寫入,默認爲no,建議yes。Linux的默認fsync策略是30秒,可能丟失30秒數據。

(5)auto-aof-rewrite-percentage:默認值爲100。aof自動重寫配置,當目前aof文件大小超過上一次重寫的aof文件大小的百分之多少進行重寫,即當aof文件增長到一定大小的時候,Redis能夠調用bgrewriteaof對日誌文件進行重寫。這樣做的目的是壓縮aof文件,當前AOF文件大小是上次日誌重寫得到AOF文件大小的二倍(設置爲100)時,自動啓動新的日誌重寫過程。

(6)auto-aof-rewrite-min-size:64mb。設置允許重寫的最小aof文件大小,避免了達到約定百分比但尺寸仍然很小的情況還要重寫。

12. LUA SCRIPTING

在這裏插入圖片描述

(1)lua-time-limit:一個lua腳本執行的最大時間,單位爲ms。默認值爲5000。

13. REDIS CLUSTER

在這裏插入圖片描述

(1)cluster-enabled:是否啓用集羣,默認是不開啓集羣模式。

(2)cluster-config-file:集羣配置文件的名稱,每個節點都有一個集羣相關的配置文件,持久化保存集羣的信息。 這個文件並不需要手動配置,這個配置文件有Redis生成並更新,每個Redis集羣節點需要一個單獨的配置文件。需要確保與實例運行的系統中配置文件名稱不衝突,默認配置爲nodes-6379.conf

(3)cluster-node-timeout:可以配置值爲15000。節點互連超時的閥值,集羣節點超時毫秒數。

(4)cluster-slave-validity-factor :可以配置值爲10。在進行故障轉移的時候,全部從節點都會請求申請爲主節點,但是有些從節點可能與主節點斷開連接一段時間了, 導致數據過於陳舊,這樣的從節點不應該被提升爲主節點。該參數就是用來判斷從節點與主節點斷開的時間是否過長,判斷方法是:比較從節點斷開連接的時間和(node-timeout * slave-validity-factor) + repl-ping-slave-period 。如果節點超時時間爲三十秒, 並且slave-validity-factor爲10,假設默認的repl-ping-slave-period是10秒,即如果超過310秒slave將不會嘗試進行故障轉移。

(5)cluster-require-full-coverage:默認情況下,集羣全部的slot必須是有節點負責,集羣狀態才爲ok,才能對外提供服務。若該配置設置爲no,可以在slot沒有全部分配的時候提供服務。通常情況下不建議打開該配置,這樣會造成分區的時候,小分區的主節點一直在接受寫請求,從而造成很長時間數據不一致。

——End——
更多精彩分享,可掃碼關注微信公衆號哦。

在這裏插入圖片描述

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