本章將會寫單獨乙個redis資料的實現,比如伺服器儲存資料庫的方法,客戶端切換資料的方法,資料庫儲存鍵值對的方法,以及針對資料庫的新增,刪除,檢視,更新操作的實現方法等。
在初始化伺服器時,程式會根據伺服器狀態的dbnum屬性來決定應該決定應該建立多少個資料庫;預設情況下,該選項的值為16,所以redis伺服器缺省會建立16個資料庫。資料庫結構:
struct redisserver
;
當執行select命令就會切換目標資料庫,那麼當我們再查詢資料庫中的資料的時候會查詢目標資料庫中的資料。在客戶端狀態redisclient結構的db屬性,這個屬性是乙個指向redisdb結構的指標。
typedef
struct redisclientredisclient;
redisdb結構的dict字典儲存了資料庫中的所有鍵值對,我們將這個字典稱為鍵空間(key space):
typedef
struct redisdbredisdb;
新增新鍵
刪除鍵
更新鍵
對鍵取值
其他鍵空間操作
不細說這一塊了都是不常用的一些指令,比如exists,rename,keys之類的。
讀寫鍵空間時的維護操作
Redis的設計與原理 一
本章講解的是redis當初設計的資料結構和內部物件的知識點 1.動態字串 雖然redis使用的是ansi c所編寫但是內部使用的字串並沒有使用c中的字串,而是使用了一種名為簡單動態字串 dynarmic string,sds 的抽象型別作為它的預設字串型別 struct sdshdrsds就是上面這...
Redis的設計與原理(六)
redis並沒有直接使用這些資料結構來實現鍵值對資料庫,而是基於這些資料結構建立了乙個物件系統,這個物件系統包含字串物件,列表物件,雜湊物件,集合物件和有序集合物件這五種型別的物件,每種物件都用到了至少一種我們前面所介紹的資料結構。通過這五種不同型別的物件,redis可以在執行命令之前,根據物件的型...
Redis 設計與實現 (七) 事務
事務 acid,指資料庫事務正確執行的四個基本要素的縮寫。包含 原子性 atomicity 一致性 consistency 隔離性 isolation 永續性 durability redis 通過multi exec watch 實現事務 一 事務開始 mulit mulit 標誌事務開始,將客戶...