Redis資料庫實現

2021-07-14 14:26:01 字數 1554 閱讀 1491

redis伺服器將所有資料庫都儲存在伺服器狀態redis.h/redisserver結構的db陣列中,db陣列的每一項都是乙個redisdb結構,每個redisdb代表乙個資料庫。

struct redisserver ;

每個redis客戶端都有自己的目標資料庫,預設情況下redis客戶端的目標資料庫為0號資料庫。但是客戶端可以用select來切換目標資料庫。

struct redisclient redisclient;

redisclient.db 指標指向redisserver.db陣列中的乙個元素。如下所示:

redisdb結構的dict字典儲存了資料庫中的所有鍵值對,

typedef struct redisdb  [

dict *dict;

dict *expires; //儲存資料庫中所有鍵的過期時間

}redisdb;

例如執行下面一系列的操作後

資料庫的儲存空間如9-4所示:

使用redis命令對資料庫進行讀寫時,伺服器不進會對建空間執行指定的讀寫操作,還會有額外的操作:

設定鍵的生存或過期時間,過期字典

儲存資料庫中所有鍵的過期時間。expires字典:

下圖展示了帶過期時間的redisdb結構:

過期鍵刪除策略,

複製模式: 當伺服器執行在複製模式下時,從伺服器的過期鍵刪除動作由主伺服器控制;

資料庫通知:

是redis2.8版本新增加的功能,這個功能可以讓客戶端通過訂閱給定的頻道或模式,來獲知資料庫中鍵的變化,以及資料庫中命令執**況。

Redis 單機資料庫的實現 資料庫原理

目錄 1.伺服器中的資料庫 2.資料庫鍵空間 2.1.讀寫空間時的維護操作 3.過期時間 4.過期刪除策略 4.1.定時刪除 4.2.惰性刪除 4.3.定期刪除 4.4.redis刪除策略 5.aof rdb和複製功能對對過期鍵的處理 5.1.rdb 5.2.aof 5.3.複製 6.資料庫通知 r...

redis設計與實現 8 資料庫

typedef struct redisdb redisdb dict陣列儲存所有的資料庫,redis初始化的時候,缺省會建立16個資料庫 define redis default dbnum16 預設情況下,redis客戶端的目標資料庫是0 號資料庫,可以通過select命令切換。注意,由於red...

Redis資料庫(初級)

redis是乙個開源的非關係型資料庫,它採用c語言編寫,是乙個key value儲存系統,它儲存的value型別很多,包括string 字串 list 鍊錶 set 集合 zset 有序集合 hash 雜湊 比如,我們插入一條資料,如下 python view plain copy import r...