Redis記憶體儲存結構分析

2021-08-25 20:17:18 字數 1757 閱讀 1128

from:

redis: a persistent key-value database with built-in net inte***ce written in ansi-c for posix systems

本文是基於 redis-v2.2.4 版本進行分析.

redis 是支援多key-value資料庫(表)的,並用 redisdb 來表示乙個key-value資料庫(表). redisserver 中有乙個 redisdb *db; 成員變數, redisserver 在初始化時,會根據配置檔案的 db 數量來建立乙個 redisdb 陣列. 客戶端在連線後,通過 select 指令來選擇乙個 reidsdb,如果不指定,則預設是redisdb陣列的第1個(即下標是 0 ) redisdb. 乙個客戶端在選擇 redisdb 後,其後續操作都是在此 redisdb 上進行的. 下面會詳細介紹一下 redisdb 的記憶體結構.

redis 的記憶體儲存結構示意圖

redisdb 的定義:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

typedefstructredisdb

redisdb;

struct

redisdb 中 ,dict 成員是與實際儲存資料相關的. dict 的定義如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

redis記憶體分析

web專案中經常會使用redis作為快取,當專案了執行一段時間後,由於不恰當的使用方法和需求迭代頻繁,導致redis記憶體快速增長,這時就需要對redis的key進行分析,刪掉無用的key以節省空間 使用redis自帶的info keyspace命令可以檢視簡略的key分布情況 rdbtools是用...

Redis儲存結構

redis現在是比較流行的快取資料庫,一般剛接觸的時候都會發現其可以儲存字串 string 雜湊表 hash 列表 list 集合 set 有序集合 sorted set 等。redis是乙個key value儲存,value可以包含上面列出的多種結構,但是key都是字串。也就是說key是strin...

redis的儲存結構

hash 是乙個string 型別的field 和value 的對映表。hash特別適合儲存物件,相對於將物件的每個欄位存成單個string型別。乙個物件儲存在hash型別中會占用更少的記憶體,並且可以更方便的訪問整個物件。我們簡單舉個例項來描述下hash的應用場景,比如我們要儲存乙個使用者資訊物件...