1. 程式人生 > >【Redis】內部資料結構自頂向下梳理

【Redis】內部資料結構自頂向下梳理

本部落格將順著自頂向下的思路梳理一下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 { //資料庫的鍵空間