redis 資料型別對應編碼簡析

2021-10-23 09:06:09 字數 1520 閱讀 8623

redis是使用c語言編寫的,所以每個資料型別底層的內部編碼,作為程式猿的我們不難理解,了解了它們的底層編碼,讓我們對redis的使用變得更加得心應手。

// 檢視資料的編碼型別

object encoding key

型別與編碼的對應關係圖:

1、int:8個位元組的長整型

2、embstar:小於等於 39 位元組的字串

3、raw:大於 39 位元組的字串

ziplist(壓縮列表):使用這個資料編碼型別,需要滿足以下兩個條件

1、元素個數小於 hash-max-ziplist-entries的配置(預設512)

2、所有的值都小於 hash-max-ziplist-value(預設64位元組)

hashtable(雜湊表):不滿足以上任一條件,就會用這種編碼型別,導致讀寫效率下降,它的讀寫時間複雜度位 o(1)

ziplist(壓縮列表):使用這個資料編碼型別,需要滿足以下兩個條件 (和上邊一樣

1、元素個數小於 hash-max-ziplist-entries的配置(預設512)

2、所有的值都小於 hash-max-ziplist-value(預設64位元組)

linkedlist(鍊錶):不滿足以上任一條件,就會用這種編碼型別

redis 的 3.2 版本 提供了 quicklist 編碼型別,可以 說是結合了ziplist 和 linkedlist 的優勢

intset:當集合中元素都是證書而且元素個數小於 set-max-ziplist-entries (預設 512)

hashtable:以上條件不滿足的時候,使用這種編碼型別

ziplist:使用這個資料編碼型別,需要滿足以下兩個條件

1、元素個數小於 zset-max-ziplist-entries的配置(預設512)

2、所有的值都小於 zset-max-ziplist-value(預設64位元組)

skiplist(跳躍表):不滿足以上任一條件,就會用這種編碼型別,導致讀寫效率下降

redis簡學 list資料型別

最基礎的命令 lpush key value 從鍵為key的列表頭部開始插入,值是value llen key 獲取鍵為key的列表的長度 舉例 lpush users zhangsan lpush users jack lpush users lily 檢視長度 llen users 取出列表中所...

redis常用資料型別對應的資料結構

redis的資料型別都是通過多種資料結構來實現,主要是出於時間和空間的考慮,當資料量小的時候通過陣列下標訪問最快,占用記憶體最小 壓縮列表是陣列的變種,允許儲存的資料大小不同 因為陣列需要占用連續的記憶體空間,所以當資料量大的時候,就需要使用鍊錶,同時為了保證速度又需要和陣列結合,也就有了雜湊表。1...

剖析Redis常用資料型別對應的資料結構

本文是學習演算法的筆記,資料結構與演算法之美 極客時間的課程 今天來看下,經典資料庫 redis 中常用資料型別,底層都是用哪種資料結構實現的?redis 是一種鍵值 key value 資料庫。相對於關係型資料庫,redis 也被叫作非關係型資料庫 你mysql這樣的關係型資料庫,表的結構比較複雜...