redis物件型別
redis並沒有用我們先前提到的的主要資料結構:sds,鍊錶,字典,壓縮列表,跳躍列表作為redis物件的直接實現.而是基於這些資料 結構建立乙個物件系統.
這個系統包括了字串物件,雜湊物件,列表物件,集合物件和有序集合物件.每種物件都至少用到了乙個我們前面介紹的資料結構.
一.物件型別以及編碼
redis使用物件表示資料庫中的鍵和值.每次新建乙個鍵值對的時候,至少會建立兩個物件,鍵物件和值物件.例如:set msg "hello".msg就是鍵物件,hello就是值物件.
redis每乙個物件都是由乙個redisobject來表示.
typedef struct redisobject robj;
1.1 型別,編碼格式以及它們的對應關係
物件的型別分別對應字串物件,雜湊物件,列表物件,集合物件和有序集合物件
#define redis_string 0
#define redis_list 1
#define redis_set 2
#define redis_zset 3
#define redis_hash 4
物件的編碼分別對應之前介紹的八種基本型別
#define redis_encoding_raw 0 /* raw representation */
#define redis_encoding_int 1 /* encoded as integer */
#define redis_encoding_ht 2 /* encoded as hash table */
#define redis_encoding_zipmap 3 /* encoded as zipmap */
#define redis_encoding_linkedlist 4 /* encoded as regular linked list */
#define redis_encoding_ziplist 5 /* encoded as ziplist */
#define redis_encoding_intset 6 /* encoded as intset */
#define redis_encoding_skiplist 7 /* encoded as skiplist */
各型別的儲存結構如下圖所示:
Redis 物件的型別與編碼
redis 使用物件來表示資料庫中的鍵和值,每次當我們在 redis 的資料庫中新建立乙個鍵值對時,我們至少會建立兩個物件,乙個物件用作鍵值對的鍵 鍵物件 另乙個物件用作鍵值對的值 值物件 舉個例子,以下 set 命令在資料庫中建立了乙個新的鍵值對,其中鍵值對的鍵是乙個包含了字串值 msg 的物件,...
Redis物件 Redis物件系統簡介
最新 redis記憶體 三個重要的緩衝區 最新 redis記憶體 記憶體消耗 記憶體都去哪了?最新 redis持久化 如何選擇合適的持久化方式 最新 redis持久化 aof日誌 之前幾篇文章,簡單介紹 redis用到的所有主要資料結構,簡單動態字串 sds 雙端鍊錶 字典 壓縮列表 整數集合 跳躍...
Redis 物件 雜湊物件
每種型別的變數至少使用了兩種不同的編碼 1 五種物件的底層編碼 字串型別物件 redis encoding int redis encoding embstr redis encoding raw 列表型別的物件 redis encoding ziplist redis encoding linke...