redis配置文件redis.conf參數說明

配置文件參數說明

    參考鏈接:http://www.cnblogs.com/pqchao/p/6558688.html

http://www.redis.net.cn/tutorial/3504.html  (推薦)

1. Redis默認不是以守護進程的方式運行,可以通過該配置項修改,使用yes啓用守護進程,當redis作爲守護進程運行的時候,它會寫一個 pid 到 /var/run/redis.pid 文件裏面

  daemonize no

2. 當Redis以守護進程方式運行時,Redis默認會把pid寫入/var/run/redis.pid文件,可以通過pidfile指定

   pidfile /var/run/redis.pid

3. 指定Redis監聽端口,默認端口爲6379,作者在自己的一篇博文中解釋了爲什麼選用6379作爲默認端口,因爲6379在手機按鍵上MERZ對應的號碼,而MERZ取自意大利歌女Alessia Merz的名字

   port 6379

4. 綁定的主機地址

   bind 127.0.0.1

5.當 客戶端閒置多長時間後關閉連接,如果指定爲0,表示關閉該功能。客戶端連接過多,可以設置這個參數,比如設置成30   表示3客戶端閒置0s(秒)後關閉連接。這樣連接就不會有很多了

  timeout 300

6. 指定日誌記錄級別,Redis總共支持四個級別:debug、verbose、notice、warning。生產環境下一般開啓notice

  loglevel  notice

7. 日誌記錄方式,默認爲標準輸出,如果配置Redis爲守護進程方式運行,而這裏又配置爲日誌記錄方式爲標準輸出,則日誌將會發送給/dev/null

   logfile /taoleapp/redis/redis.log   #如果有多個redis,也可以根據他的端口來命名。如

   logfile /taoleapp/redis/redis6379.log   配置文件也是如此。如: redis6379.conf  redis7379.conf這樣

8. 設置數據庫的數量,默認數據庫爲0,可以使用SELECT <dbid>命令在連接上指定數據庫id

   databases 16

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

存 DB 到磁盤(這個是redis默認的RDB持久化配置):

   格式:save <間隔時間(秒)> <寫入次數>

   save <seconds> <changes>

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

   save 900 1      # 900 秒內如果至少有 1 個 key 的值變化,則保存

   save 300 10    # 300 秒內如果至少有 10 個 key 的值變化,則保存

   save 60 10000   # 60 秒內如果至少有 10000 個 key 的值變化,則保存

   分別表示900秒(15分鐘)內有1個更改,300秒(5分鐘)內有10個更改以及60秒內有10000個更改。

 注意:你可以註釋掉所有的 save 行來停用保存功能。

   也可以直接一個空字符串來實現停用:

   save ""

10. 指定存儲至本地數據庫時是否壓縮數據,默認爲yes,Redis採用LZF壓縮,如果爲了節省CPU時間,可以關閉該選項,但會導致數據庫文件變的巨大

  rdbcompression yes

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

   dbfilename dump.rdb

12. 指定本地數據庫存放目錄,例如上面的 dbfilename 只指定了文件名,

但是它會寫入到這個目錄下。這個配置項一定是個目錄,而不能是文件名。

   dir ./

13. 設置當本機爲slav服務時,設置master服務的IP地址及端口,在Redis啓動時,它會自動從master進行數據同步

  slaveof <masterip> <masterport>

14. 當master服務設置了密碼保護時,slav服務連接master的密碼

   masterauth <master-password>

15. 設置Redis連接密碼,如果配置了連接密碼,客戶端在連接Redis時需要通過AUTH <password>命令提供密碼,默認關閉

警告:redis速度相當快,一個外部的用戶可以在一秒鐘進行150K次的密碼嘗試,你需要指定非常非常強大的密碼來防止暴力破解

  requirepass foobared

16. 設置同一時間最大客戶端連接數,默認無限制,Redis可以同時打開的客戶端連接數爲Redis進程可以打開的最大文件描述符數,如果設置 maxclients 0,表示不作限制。當客戶端連接數到達限制時,Redis會關閉新的連接並向客戶端返回max number of clients reached錯誤信息

   maxclients 128

17. 指定Redis最大內存限制,Redis在啓動時會把數據加載到內存中,達到最大內存後,Redis會先嚐試清除已到期或即將到期的Key,當此方法處理 後,仍然到達最大內存設置,將無法再進行寫入操作,但仍然可以進行讀取操作。Redis新的vm機制,會把Key存放內存,Value會存放在swap區

   maxmemory <bytes>      如:maxmemory 2684354560  就是2.6G左右

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

   appendonly no

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

   appendfilename appendonly.aof

20. 指定更新日誌條件,共有3個可選值(這個是AOF持久化的配置):

   no:表示等操作系統進行數據緩存同步到磁盤(快),從不同步。高效但是數據不會被持久化

   always:表示每次更新操作後手動調用fsync()將數據寫到磁盤(慢,安全)

   everysec:表示每秒同步一次(折衷,默認值)

   appendfsync everysec   #每秒鐘同步一次,該策略爲AOF的缺省策略

   

21. 指定是否啓用虛擬內存機制,默認值爲no,簡單的介紹一下,VM機制將數據分頁存放,由Redis將訪問量較少的頁即冷數據swap到磁盤上,訪問多的頁面由磁盤自動換出到內存中(在後面的文章我會仔細分析Redis的VM機制)

   vm-enabled no

22. 虛擬內存文件路徑,默認值爲/tmp/redis.swap,不可多個Redis實例共享

    vm-swap-file /tmp/redis.swap

23. 將所有大於vm-max-memory的數據存入虛擬內存,無論vm-max-memory設置多小,所有索引數據都是內存存儲的(Redis的索引數據 就是keys),也就是說,當vm-max-memory設置爲0的時候,其實是所有value都存在於磁盤。默認值爲0

   vm-max-memory 0

24. Redis swap文件分成了很多的page,一個對象可以保存在多個page上面,但一個page上不能被多個對象共享,vm-page-size是要根據存儲的 數據大小來設定的,作者建議如果存儲很多小對象,page大小最好設置爲32或者64bytes;如果存儲很大大對象,則可以使用更大的page,如果不 確定,就使用默認值

   vm-page-size 32

25. 設置swap文件中的page數量,由於頁表(一種表示頁面空閒或使用的bitmap)是在放在內存中的,,在磁盤上每8個pages將消耗1byte的內存。

   vm-pages 134217728

26. 設置訪問swap文件的線程數,最好不要超過機器的核數,如果設置爲0,那麼所有對swap文件的操作都是串行的,可能會造成比較長時間的延遲。默認值爲4

   vm-max-threads 4

27. 設置在向客戶端應答時,是否把較小的包合併爲一個包發送,默認爲開啓

   glueoutputbuf yes

28. 指定在超過一定的數量或者最大的元素超過某一臨界值時,採用一種特殊的哈希算法

   hash-max-zipmap-entries 64

   hash-max-zipmap-value 512

29. 指定是否激活重置哈希,默認爲開啓(後面在介紹Redis的哈希算法時具體介紹)

   activerehashing yes

30. 指定包含其它的配置文件,可以在同一主機上多個Redis實例之間使用同一份配置文件,而同時各個實例又擁有自己的特定配置文件

   include /path/to/local.conf

31.單位是秒,表示將週期性的使用SO_KEEPALIVE檢測客戶端是否還處於健康狀態,避免服務器一直阻塞,官方給出的建議值是300s,如果設置爲0,則不會週期性的檢測

   tcp-keepalive 300

32.可以通過upstart和systemd管理Redis守護進程

  選項:

  supervised no - 沒有監督互動

  supervised upstart - 通過將Redis置於SIGSTOP模式來啓動信號

  supervised systemd - signal systemd將READY = 1寫入$ NOTIFY_SOCKET

  supervised auto - 檢測upstart或systemd方法基於 UPSTART_JOB或NOTIFY_SOCKET環境變量

  supervised no

33.要想把日誌記錄到系統日誌,就把它改成 yes,也可以可選擇性的更新其他的syslog 參數以達到你的要求

    syslog-enabled no

   

34.設置系統日誌的ID

  syslog-ident redis

35.指定系統日誌設置,必須是 USER 或者是 LOCAL0-LOCAL7 之間的值

  syslog-facility local0

36.******如果用戶開啓了RDB快照功能,那麼在redis持久化數據到磁盤時如果出現失敗,默認情況下,redis會停止接受所有的寫請求

這樣做的好處在於可以讓用戶很明確的知道內存中的數據和磁盤上的數據已經存在不一致了。

 如果redis不顧這種不一致,一意孤行的繼續接收寫請求,就可能會引起一些災難性的後果。

 如果下一次RDB持久化成功,redis會自動恢復接受寫請求。

 如果不在乎這種數據不一致或者有其他的手段發現和控制這種不一致的話,可以關閉這個功能,

 以便在快照寫入失敗時,也能確保redis繼續接受新的寫請求。

37. 在存儲快照後,我們還可以讓redis使用CRC64算法來進行數據校驗,但是這樣做會增加大約10%的性能消耗,

 如果希望獲取到最大的性能提升,可以關閉此功能。

   rdbchecksum yes

38.當一個 slave 與 master 失去聯繫,或者複製正在進行的時候,

 slave 可能會有兩種表現:

 1) 如果爲 yes ,slave 仍然會應答客戶端請求,但返回的數據可能是過時,

    或者數據可能是空的在第一次同步的時候

 2) 如果爲 no ,在你執行除了 info he salveof 之外的其他命令時,

    slave 都將返回一個 "SYNC with master in progress" 的錯誤

   

  slave-serve-stale-data yes

39.從站優先級是可以從redis的INFO命令輸出中查到的一個整數。當主站不能正常工作時

 redis sentinel使用它來選擇一個從站並將它提升爲主站。

 低優先級的從站被認爲更適合於提升,因此如果有三個從站優先級分別是10,

 100,25,sentinel會選擇優先級爲10的從站,因爲它的優先級最低。

 然而優先級值爲0的從站不能執行主站的角色,因此優先級爲0的從站永遠不會被redis sentinel提升。

 默認優先級是100

  slave-priority 100


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