[redis學習筆記]三、Redis.conf文件解析

redis.conf文件解析

units

  1. 配置大小單位,redis.conf文件開頭定義了一些基本的度量單位,只支持bytes(字節),不支持bit(位)

    1k => 1000 bytes
    1kb => 1024 bytes
    1m => 1000000 bytes
    1mb => 1024*1024 bytes
    1g => 1000000000 bytes
    1gb => 1024*1024*1024 bytes
    
  2. 配置單位對大小寫不敏感,如1Gb、1GB和1gB是一樣的。

includes

includes模塊可以包含一個或多個別的配置文件,因爲需要自定義進行多處配置,如果寫在redis.conf中可能會導致這個文件比較臃腫,索性將自定義的配置文件,通過文件路徑的方式引入到這裏。用法如下

inlucde /path/to/local.conf

GENERAL(通用配置)

daemonize

默認值爲no,默認redis是以前臺方式啓動,即執行redis-server後顯式地運行redis服務,如果不慎執行ctrl+c,那麼該redis服務即關閉,這對我們的使用不太友好。因此,通過將daemonize設置yes,使redis服務在後臺以守護進程的方式啓動。

設置daemonize爲yes時,redis會把pid(進程id)默認寫入到 /var/run/redis.pid文件裏。注意:這個文件路徑可通過pidfile參數來更改

pidfile

自定義寫入pid的文件路徑,如果指定了pid file,那麼redis會在啓動時,將pid寫入該文件,並在退出時刪除該文件。

logfile

指定日誌文件的名稱。如果設置了空字符串,那麼會強制redis以標準輸出來記錄。注意:如果你是使用daemonize=yes啓動的服務,而且是以標準輸出來記錄的,那麼日誌會被放到/dev/null文件。

/dev/null屬於字符特殊文件,是個特殊的設備文件,它會丟棄一切寫入其中的數據,寫入它的內容會永遠丟失,而且沒有任何可以讀取的內容。

loglevel

指定服務器詳細日誌級別。可選值如下:

  1. debug(會打印出很多信息,適合開發、測試)
  2. verbose(很少有用的信息,不過不像debug級別那樣亂)
  3. notice(這個可能是生產中需要用到的級別)
  4. warning(僅僅記錄非常重要/關鍵的消息)

如無特殊需要,選默認值即可

syslog-enabled

是否把redis日誌輸出到system.log(是系統裏的一個物理文件),取值yes/no。可配合其他幾個syslog參數一起使用

syslog-ident

指定syslog裏的日誌標誌,默認是redis

syslog-facility

指定syslog設備,值可以是USER或LOCAL0-LOCAL7

databases

設置數據庫的數量,默認的數據庫是0號數據庫

舉例

將redis.conf配置logfile

logfile “redis.log”

重新啓動,在運行目錄下發現redis.log文件

在這裏插入圖片描述

NETWORK

bind

綁定一個或多個ip地址。默認情況下,如果沒有設置bind,Redis會監聽來自服務器上所有可用網絡接口的連接。

例子:

## 配置多個ip地址
bind 192.168.1.100 10.0.0.1

## 配置1個ip地址
bind 192.168.1.100
port

redis服務器啓動的端口號

tcp-backlog

在高併發環境下需要一個高backlog值來避免慢客戶端連接問題。backlog其實是一個連接隊列,backlog隊列之和=未完成三次握手的隊列+已經完成三次握手的隊列

如無額外需求,選用默認值即可

timeout

當客戶端空閒N秒後,關閉連接。如果timeout設置爲0,表示不超時

tcp-keepalive

單位秒,如果設置爲0,則不會進行Keepalive檢測

原理:一方通過發送一個TCP Keep-Alive數據包,然後另一方迴應TCP Keep-Alive ACK數據包。類似於心跳機制

默認配置 tcp-keepalive 300。也即是tcp連接空閒了300s後 即發送Keep-Alive數據包,以確認連接是否還活着。

CLIENTS

maxclients

設置redis同時可以與多少個客戶端進行連接。默認情況下爲10000個客戶端。當你無法設置進程文件句柄限制時,redis會設置爲當前的文件句柄限制值減去32,因爲redis會爲自身內部處理邏輯留一些句柄出來。如果達到了此限制,redis則會拒絕新的連接請求,並且向這些連接請求方發出“max number of clients reached”以作迴應。

MEMORY MANAGEMENT

maxmemory

設置redis可以使用的內存量。一旦到達內存使用上限,redis會試圖移除內部數據,移除規則可以通過maxmemory-policy來指定。如果redis無法根據移除規則來移除內存中的數據,或者移除規則設置了"noeviction",那麼redis則會針對那些需要申請內存的指令返回錯誤信息,如SET/LPUSH等。但是對於無內存申請的指令,如GET等仍然會正常響應。

**注意:**如果設置了主從,那麼主redis在設置內存使用上限時需要在系統中留出一些內存空間給同步隊列緩存使用。(只有當規則設置成"noeviction",纔不需要考慮這個因素)

maxmemory-policy 內存回收規則

LRU:Least recently used 最近最少使用

LFU: Least frequently used 最不經常使用

  1. volatile-lru:使用LRU算法移除key,只對設置了過期時間的鍵
  2. allkeys-lru:使用LRU算法移除key
  3. volatile-lfu:使用LFU算法移除key,只對設置了過期時間的鍵
  4. allkeys-lfu:使用LFU算法移除key
  5. volatile-random:在過期集合中移除隨機的key,只對設置了過期時間的鍵
  6. allkeys-random:移除隨機的key
  7. volatile-ttl:移除那些TTL值最小的key,即那些最近要過期的key
  8. noeviction:不進行移除。針對寫操作,只是返回錯誤信息
maxmemory-samples

設置樣本數量,LFU算法、LRU算法和最小TTL算法都並非是精確的算法,而是估算值,所以你可以設置樣本的大小,

redis默認會檢查5個key並選擇其中一個最近較少使用的。

默認值5產生足夠好的結果。10非常接近真正的LRU,但需要更多的CPU。3更快,但不太準確。

SECURITY

requirepass

設置redis登錄密碼,如設置密碼爲123456,則命令如下

requirepass 123456

設置了登錄密碼之後,客戶端登錄時 需要指定密碼,命令如下

redis-cli -h 127.0.0.1 -p 6379 -a 123456

SNAPSHOTTING

save

指定在多長時間內,有多少次更新操作,就將數據同步到數據文件,可以多個條件配合。

Redis默認配置文件中提供了三個條件:

save 900 1 表示15分鐘內改了1次
save 300 10 表示5分鐘內改了10次
save 60 10000 表示1分鐘內改了1萬次

**注意:**如果想禁用RDB持久化策略,只要不設置任何save指令或給save傳入一個空字符串參數即可,如save “”

stop-writes-on-bgsave-error

默認情況下,如果啓用了RDB快照,但是最新一次的後臺保存失敗,Redis將停止接收寫入數據。如果設置爲no,表示用戶不在乎數據不一致的情況

rdbcompression

對於存儲到磁盤中的快照,可以設置是否進行壓縮存儲。如果是的話,redis會採用LZF算法進行壓縮。如果你不想消耗CPU來進行壓縮的話,可以設置爲關閉此功能

rdbchecksum

在存儲快照後,還可以讓redis使用CRC64算法來進行數據校驗,但是這樣做會增加大約10%的性能消耗,如果希望獲取到最大的性能提升,可以關閉此功能

dbfilename

指定本地數據庫文件名,默認值爲dump.rdb

dir

工作目錄。

rdb文件、aof文件、log日誌文件都會被寫到該目錄下。

默認值是./,即啓動redis-server服務時所在的目錄

APPEND ONLY MODE

appendonly

指定是否在每次更新操作後進行日誌記錄,Redis在默認情況下是異步的把數據寫入磁盤,如果不開啓,可能會在斷電時導致一段時間內的數據丟失。因爲 redis本身同步數據文件是按上面save條件來同步的,所以有的數據會在一段時間內只存在於內存中。默認爲no

appendfilename

指定更新日誌文件名,默認爲appendonly.aof

appendfsync

指定更新日誌條件,共有3個可選值:

no:表示等操作系統進行數據緩存同步到磁盤(快)

always:同步持久化,每次發送數據變更會被立即記錄到磁盤,性能較差單數據完整性比較好(每次更新操作後手動調用fsync()將數據寫到磁盤)(慢,安全)

everysec:異步操作,每秒同步一次,有數據丟失(如系統宕機,會丟失最後一秒數據)(默認值)

no-appendfsync-on-rewrite

重寫時是否可以運用Appendfsync,用默認no即可,保證數據安全性。

auto-aof-rewrite-min-size、auto-aof-rewrite-percentage

設置重寫的基準值

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