在關係型資料庫如mysql,資料庫資料是按照行記錄格式進行儲存的。同理,我們常說redis是乙個鍵值對(key-value)
構成的記憶體資料庫,具體是以什麼形式進行儲存的,下面通過原始碼一看究竟。
在redis.h/redisserver
中記錄了乙個由redis.h/redisdb
結構組成的陣列,這裡的每乙個redisdb
都是乙個資料庫,在redis中預設資料庫數量由redis_default_dbnum
引數控制,預設是16。
typedef struct redisdb redisdb;
複製**
之前剖析過[redis]資料結構與物件,其中底層資料結構的實現之一是字典(hashtable)
。底層基礎決定高層架構,因此redis資料庫的構建、查詢、新增、移除、過期等也利用字典的特性完成的。
正是使用了字典表這種雜湊表形式,使得redis的鍵查詢的時間複雜度為o(1)
,查詢處理速度非常快。
Redis 資料庫鍵空間
redis 是乙個鍵值對 key value pair 資料庫伺服器,伺服器中的每個資料庫都由乙個redis.h redisdb結構表示,其中,redisdb結構的dict字典儲存了資料庫中的所有鍵值對,我們將這個字典稱為鍵空間 key space typedef struct redisdb re...
redis 資料庫相關 鍵空間
版本 5.0 結構typedef struct redisdb redisdb 讀寫鍵空間時的維護操作 說明 對鍵空間執行指定的讀寫操作外,還會執行其他額外的維護操作 讀取鍵後,會根據鍵是否存在更新伺服器鍵空間命中 hit 或不命中 miss 次數,可以通過 info stat 命令中的 keysp...
redis系列之 資料庫
當我們在redis資料庫中set乙個kv的時候,這個kv儲存在 如果我們get的時候,又從 get出來。時間複雜度,空間複雜的等等,怎麼優化等等一系列問題。redis伺服器將所有資料庫資訊都儲存在redis.h redisservice結構體中。如下 1 struct redisserver 列了幾...