配置文件位置
配置文件位于redis安裝目錄下,文件名為redis.conf。可以通過
CONFIG
命令查看或設置配置項
- 使用*號可以獲取所有配置項
CONFIG GET *
編輯配置項
可以通過修改
redis.conf
文件或使用CONFIG SET
命令來修改配置
參數說明
Redis默認不是已守護進程的方式運行,可以通過修改配置項參數啟動,使用
yes
啟用守護進程當redis以守護進程運行時,redis會默認把
pid
寫入/var/run/redis.pid
文件,可以通過pidfile
指定.
pidfile /var/run/redis.pid
- 指定redis監聽端口,默認為
6379
port 6379
- 綁定主機地址
bind 127.0.0.1
- 客戶端閑置時間關閉連接設置,如果指定為
0
表示關閉該功能
timeout 300
- 指定日志記錄級別,redis支持四個級別:
debug
、verbose
、notice
、warning
,默認為verbose
loglevel verbose
- 日志記錄方式,默認為標準輸出 若配置redis為守護進程方式運行,而此時配置日志記錄方式為標準輸出,則日志會發送給
/dev/null
logfile stdout
- 設置數據庫數量,默認數據庫為
0
,可以使用SELECT <dbid>
命令連接指定數據庫id
database 16
- 指定多長時間內,有多少次更新,就將數據同步到數據文件,可以多個條件配合
save <second> <changes>
- redis默認配置提供了三個條件:
- save 900 1
- save 300 10
- save 60 10000
分別表示900秒內1個有效更新,300秒10個有效更新,60秒10000個有效更新
- 指定存儲至本地數據庫時是否壓縮數據,默認為
yes
,redis采用LZF
壓縮,若為節約cpu時間可以關閉該選項,但會導致數據文件變的巨大。
rdbcompression yes
- 指定本地數據庫文件名,默認為
dump.rdb
dbfilename dump.rdb
- 指定本地數據庫存放目錄
dir ./
- 設置本機slav服務時,設置master服務的IP地址及端口,在redis啟動時,會自動從master進行數據同步
slaveof <masterip> <masterport>
- 當master服務設置密碼保護時,slav服務連接master密碼
masterauth <master-password>
- 設置redis連接密碼,若配置了連接密碼,客戶端在連接redis時需要通過
AUTH <password>
命令通過密碼,默認關閉
requirepass foorbared
-
設置同一時間最大客戶連接數,默認無限制
redis可以同時打開的客戶端連接數為redis進程可以打開的最大文件描述符,若設置為
maxclients 0 表示不作限制
當客戶端連接數達到限制時,redis將會關閉新的連接并向客戶端返回:max number of clients reached
錯誤信息。maxclients 128
指定redis最大內存限制
redis啟動時會把數據加載到內存中,達到最大內存后,redis會先嘗試清除已到期或即將到期的Key,當執行該操作后,仍然達到最大內存設置,將無法進行寫入操作,但可以進行讀取操作。
redis新的vm機制,會把Key存放內存,Value存放在swap區
maxmemory <bytes>
- 指定是否在每次更新操作后記錄日志。
redis默認情況下是異步的把數據寫入磁盤,若不開啟,可能會在斷電時導致某一時間段的數據丟失。因為redis本身同步數據文件是save條件來同步的,所以有的數據會在一段時間內只存在于內存
默認為NO
appendonly no
-
指定更新日志文件名
默認為appendonly.aof
appendfilename appendonly.aof
-
指定更新日志條件:
- No:表示等操作系統進行數據緩存同步到磁盤(快)
- always:表示每次更新操作后手動調用``fsync()`將數據寫入磁盤(慢,安全)
- everysec:表示每秒同步一次(較合理,默認)
appendsync everysec
-
指定是否啟用虛擬內存機制
默認值為no
VM機制將數據分頁存放,有redis將訪問量較少的頁即冷數據swap到磁盤上,訪問多的頁面有磁盤自動換出到內存
vm-enabled no 虛擬文件路徑
默認為/tmp/redis.swap
多個redis實例不可共享
vm-swap-file /tmp/redis.swap
- 將所有大于vm-max-memory的數據存入虛擬內存
無論vm-max-memory設置多小,所有索引數據都是內存存儲的(redis的索引數據,就是keys)
當vm-max-memory設置為0 的時候,所有的value都存在于磁盤,默認值為0
vm-max-memory 0
- redis page-size設置
redis swap文件分成了很多的page,一個對象可以保存在多個page上,但是一個page不能被多個對象共享,vm-page-size要根據存儲的數據大小來設置,若很多小的對象 page最好設置為32或64bytes,若不確定,建議使用默認值
vm-page-size 32
- 設置swap文件的page數量
由于頁表
一種表示頁面空閑或使用的bitmap
是存放在內存中的,在磁盤上每8個page將消耗1byte的內存
vm-page 134217728
- 設置訪問swap文件的線程數
最好不要超過機器的核數,若設置為0,那么對所有的swap文件的操作都是串行的可能會造成較長時間的延時
默認值為4
vm-max-threads 4
- 設置在客戶端應答時,是否將較小的包合并為一個包發送
默認為開啟
glueoutputbuf yes
- 指定在超過一定數量或最大元素超過某一臨界值時,采用一種特殊的哈希算法
hash-max-zipmap-entries 64
hash-max-zipmap-value 512
- 指定是否激活重置哈希
默認為開啟
activerehashing yes
- 指定包含其他的配置文件
可在同一主機上多個redis實例之間使用同一配置文件,而各個實例擁有在的特定配置文件
include /path/to/local.conf
補充知識
守護進程:也就是精靈進程(Daemon)是linux中后臺服務進程,生存周期較長,通常獨立于控制終端并且周期性的執行某種任務或等待處理某些事件的發生。脫離終端,在終端被關閉時不受影響,也是一種特殊的孤兒進程