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
typedef
struct
redisdb
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的應用場景,比如我們要儲存乙個使用者資訊物件...