【Redis】內部資料結構自頂向下梳理
阿新 • • 發佈:2020-12-31
本部落格將順著自頂向下的思路梳理一下Redis的資料結構體系,從資料庫到物件體系,再到底層資料結構。我將基於我的一個專案的程式碼來進行介紹:[daredis](https://github.com/CuriousLei/daredis)。該專案中,使用Java實現了Redis中所有的資料結構,思想與Redis大致類似,各種變數的命名與Redis原始碼基本一致,只是將結構體換成了類來實現。
##Redis資料庫
Redis伺服器在初始化時,會建立一個db陣列,大小預設是16,即建立16個數據庫。如下所示:
```
public class RedisServer {
private static int dbNum = 16;
public static RedisDB[] db;
public static void init(){
db = new RedisDB[dbNum];
}
public static void initDB(int index){
db[index] = new RedisDB();
}
}
```
實際上,每個客戶端都會擁有一個目標資料庫,預設情況下為db[0]。客戶端執行命令時,目標資料庫會成為其操作物件。
RedisDB型別包含一個字典,程式碼如下:
```
public class RedisDB {
//資料庫的鍵空間