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這樣的關係型資料庫,表的結構比較複雜...