天天看點

Redis 配置

Redis 的配置檔案位于 Redis 安裝目錄下,檔案名為 redis.conf(Windows 名為 redis.windows.conf)。

你可以通過 <b>CONFIG</b> 指令檢視或設定配置項。

Redis CONFIG 指令格式如下:

使用 <b>*</b> 号擷取所有配置項:

你可以通過修改 redis.conf 檔案或使用 <b>CONFIG set</b> 指令來修改配置。

<b>CONFIG SET</b> 指令基本文法:

redis.conf 配置項說明如下:

序号

配置項

說明

1

Redis 預設不是以守護程序的方式運作,可以通過該配置項修改,使用 yes 啟用守護程序(Windows 不支援守護線程的配置為 no )

2

當 Redis 以守護程序方式運作時,Redis 預設會把 pid 寫入 /var/run/redis.pid 檔案,可以通過 pidfile 指定

3

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

4

綁定的主機位址

5

當用戶端閑置多長秒後關閉連接配接,如果指定為 0 ,表示關閉該功能

6

指定日志記錄級别,Redis 總共支援四個級别:debug、verbose、notice、warning,預設為 notice

7

日志記錄方式,預設為标準輸出,如果配置 Redis 為守護程序方式運作,而這裡又配置為日志記錄方式為标準輸出,則日志将會發送給 /dev/null

8

設定資料庫的數量,預設資料庫為0,可以使用SELECT 指令在連接配接上指定資料庫id

9

Redis 預設配置檔案中提供了三個條件:

save 900 1

save 300 10

save 60 10000

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

指定在多長時間内,有多少次更新操作,就将資料同步到資料檔案,可以多個條件配合

10

指定存儲至本地資料庫時是否壓縮資料,預設為 yes,Redis 采用 LZF 壓縮,如果為了節省 CPU 時間,可以關閉該選項,但會導緻資料庫檔案變的巨大

11

指定本地資料庫檔案名,預設值為 dump.rdb

12

指定本地資料庫存放目錄

13

設定當本機為 slave 服務時,設定 master 服務的 IP 位址及端口,在 Redis 啟動時,它會自動從 master 進行資料同步

14

當 master 服務設定了密碼保護時,slav 服務連接配接 master 的密碼

15

設定 Redis 連接配接密碼,如果配置了連接配接密碼,用戶端在連接配接 Redis 時需要通過 AUTH &lt;password&gt; 指令提供密碼,預設關閉

16

設定同一時間最大用戶端連接配接數,預設無限制,Redis 可以同時打開的用戶端連接配接數為 Redis 程序可以打開的最大檔案描述符數,如果設定 maxclients 0,表示不作限制。當用戶端連接配接數到達限制時,Redis 會關閉新的連接配接并向用戶端傳回 max number of clients reached 錯誤資訊

17

指定 Redis 最大記憶體限制,Redis 在啟動時會把資料加載到記憶體中,達到最大記憶體後,Redis 會先嘗試清除已到期或即将到期的 Key,當此方法處理 後,仍然到達最大記憶體設定,将無法再進行寫入操作,但仍然可以進行讀取操作。Redis 新的 vm 機制,會把 Key 存放記憶體,Value 會存放在 swap 區

18

指定是否在每次更新操作後進行日志記錄,Redis 在預設情況下是異步的把資料寫入磁盤,如果不開啟,可能會在斷電時導緻一段時間内的資料丢失。因為 redis 本身同步資料檔案是按上面 save 條件來同步的,是以有的資料會在一段時間内隻存在于記憶體中。預設為 no

19

指定更新日志檔案名,預設為 appendonly.aof

20

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

no:表示等作業系統進行資料緩存同步到磁盤(快)

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

everysec:表示每秒同步一次(折中,預設值)

21

指定是否啟用虛拟記憶體機制,預設值為 no,簡單的介紹一下,VM 機制将資料分頁存放,由 Redis 将通路量較少的頁即冷資料 swap 到磁盤上,通路多的頁面由磁盤自動換出到記憶體中(在後面的文章我會仔細分析 Redis 的 VM 機制)

22

虛拟記憶體檔案路徑,預設值為 /tmp/redis.swap,不可多個 Redis 執行個體共享

23

将所有大于 vm-max-memory 的資料存入虛拟記憶體,無論 vm-max-memory 設定多小,所有索引資料都是記憶體存儲的(Redis 的索引資料 就是 keys),也就是說,當 vm-max-memory 設定為 0 的時候,其實是所有 value 都存在于磁盤。預設值為 0

24

Redis swap 檔案分成了很多的 page,一個對象可以儲存在多個 page 上面,但一個 page 上不能被多個對象共享,vm-page-size 是要根據存儲的 資料大小來設定的,作者建議如果存儲很多小對象,page 大小最好設定為 32 或者 64bytes;如果存儲很大大對象,則可以使用更大的 page,如果不确定,就使用預設值

25

設定 swap 檔案中的 page 數量,由于頁表(一種表示頁面空閑或使用的 bitmap)是在放在記憶體中的,,在磁盤上每 8 個 pages 将消耗 1byte 的記憶體。

26

設定通路swap檔案的線程數,最好不要超過機器的核數,如果設定為0,那麼所有對swap檔案的操作都是串行的,可能會造成比較長時間的延遲。預設值為4

27

設定在向用戶端應答時,是否把較小的包合并為一個包發送,預設為開啟

28

指定在超過一定的數量或者最大的元素超過某一臨界值時,采用一種特殊的雜湊演算法

29

指定是否激活重置哈希,預設為開啟(後面在介紹 Redis 的雜湊演算法時具體介紹)

30

指定包含其它的配置檔案,可以在同一主機上多個Redis執行個體之間使用同一份配置檔案,而同時各個執行個體又擁有自己的特定配置檔案