Redis五種資料型別的底層實現總結

2021-09-27 13:40:57 字數 1529 閱讀 7629

redis的五種資料型別:

redis所用到的底層資料結構:

redis並沒有直接使用以上的資料結構來實現鍵值對資料庫,而是基礎這些資料結構建立了乙個物件系統,包含:字串物件、列表物件、雜湊物件、集合物件和有序集合物件,這些物件都至少用到了一種資料結構。

使用物件的優點:

物件的型別和編碼

乙個鍵值對會至少建立兩個物件:鍵物件、值物件

如set a 「a」命令,會建立兩個字串物件,redis中的每個物件由乙個redisobject結構表示:

typedef

struct redisobjectrobj;

物件型別:

所有的鍵的物件型別都是字串物件,使用type命令可以檢視乙個鍵值對的值物件型別:

編碼和底層實現:

物件的ptr指標指向物件的底層資料結構,這些資料結構由encoding(編碼)屬性決定,下圖為物件的編碼表:

每種型別的物件都至少使用的兩種不同的編碼,可以通過如下命令檢視物件所使用的編碼:

下圖列出了每種物件可以使用的編碼:

下圖為不同的編碼的物件所對應的object encoding 命令輸出值:

同一種資料型別的redis可以有多種底層實現資料結構,極大地提公升了reids的靈活性和效率,下面列出不同的物件型別,以及相同的物件型別不同的值的情況下所對應的底層資料結構。

字串物件

字串物件可以使用的編碼有:int、raw、embstr

embstr編碼是專門用於儲存短字串的一種編碼方式。

列表物件

列表物件的編碼可以是ziplist或者linkedlist

雜湊物件

雜湊物件的編碼可以是ziplist或者hashtable

集合物件

集合物件的編碼可以是intset或者hashtable

有序集合物件

有序集合物件的編碼可以是ziplist或者skiplist

Redis 五種資料型別

一 前言 上篇部落格已經對redis的一些基本知識做了一些簡介,這篇部落格,將簡單介紹一些redis的五種資料型別。分別為string 字串 hash 雜湊 list 鍊錶 set 集合 zset 有序集合 對這些型別可以執行很多原子性的操作 比如向乙個string型別的value後面追加字串 向l...

Redis 五種資料型別

目錄 redis共有strings hashs lists sets sorted sets五種資料型別,可以說已經比較豐富了。下面只對這幾種資料型別的資料結構與用途做簡要介紹。至於每種資料型別的操作api,這裡只簡單一提,不再一一詳細介紹,有需要的使用者可以google即可。string是最簡單的...

Redis 五種資料型別

redis支援五種資料型別 string 字串 hash 雜湊 list 列表 set 集合 及zset sorted set 有序集合 資料型別一 字串 0.1 6379 set name hubotao2 ok127.0 0.1 6379 get name hubotao2 資料型別二 hash...