天天看點

Redis配置項

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 <password> 指令提供密碼,預設關閉

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執行個體之間使用同一份配置檔案,而同時各個執行個體又擁有自己的特定配置檔案

string 是 redis 最基本的類型,一個 key 對應一個 value。

string 類型是二進制安全的。意思是 redis 的 string 可以包含任何資料。比如jpg圖檔或者序列化的對象。

string 類型是 redis 最基本的資料類型,string 類型的值最大能存儲 512mb。

redis hash 是一個鍵值(key=>value)對集合。

redis hash 是一個 string 類型的 field 和 value 的映射表,hash 特别适合用于存儲對象。

每個 hash 可以存儲 232 -1 鍵值對(40多億)。

redis 清單是簡單的字元串清單,按照插入順序排序。你可以添加一個元素到清單的頭部(左邊)或者尾部(右邊)。

清單最多可存儲 232 - 1 元素 (4294967295, 每個清單可存儲40多億)。

redis 的 set 是 string 類型的無序集合。

集合是通過哈希表實作的,是以添加,删除,查找的複雜度都是 o(1)。

添加一個 string 元素到 key 對應的 set 集合中,成功傳回 1,如果元素已經在集合中傳回 0。

注意:以上執行個體中 rabbitmq 添加了兩次,但根據集合内元素的唯一性,第二次插入的元素将被忽略。

集合中最大的成員數為 232 - 1(4294967295, 每個集合可存儲40多億個成員)。

繼續閱讀