Redis內部資料結構總結(2)dict

2021-07-24 08:38:37 字數 692 閱讀 6245

dict是redis乙個非常重要的基礎資料結構,dict用來維護key和value對映關係的資料結構,與很多語言中的map或者dictionary類似。

redis的乙個database中所有key到value的對映,就是乙個dict來維護的。

另外,當redis中的hash結構資料較多時,hash的底層會從ziplist轉為dict

當redis中的sorted set 資料較多時,sorted set的底層從ziplist轉為dict+ skiplist。

基於雜湊表的查詢效能非常高效,redis中,dict採用雜湊演算法從key計算得到在雜湊表中的位置,採用拉鍊法解決衝突,並在裝載因子到達閾值時自動擴充套件記憶體,引發重雜湊。

reids的dict的非常重要的乙個特點是它的重雜湊,dict的重雜湊是一種增量式重雜湊,在需要擴充套件記憶體的時候避免一次性對所有key進行重雜湊,而是將重雜湊操作分散到對於dict的各個增刪改查操作中去。這種方法能做到每次只對一小部分key進行重雜湊,而每次重雜湊之間不影響dict的操作。這種設計避免了重雜湊期間單個請求的響應時間劇烈增加。

為了增量重雜湊,dict的資料結構裡包含兩個雜湊表。在重雜湊期間,資料從第乙個雜湊表向第二個雜湊表遷移。

redis內部資料結構的資料結構

redis對外的公眾的資料結構有五種string,list,set,hash,zset 編碼常量 編碼所對應的底層資料結構 redis encoding int long 型別的整數 redis encoding embstr embstr 編碼的簡單動態字串 redis encoding raw ...

Redis內部資料結構總結(5)skiplist

redis的sorted set 底層是由skiplist,dict,ziplist來實現的。在reids.config中有兩個配置 zset max ziplist entries 128 zset max ziplist value 64 sorted set是乙個有序集合,當資料較少時,sor...

redis內部資料結構總結(7)intset

redis裡面使用intset是為了實現集合 set 這種對外的資料結構。set結構類似於數學上的集合的概念,它包含的元素無序,且不能重複。redis裡的set結構還實現了基礎的集合並 交 差的操作。與redis對外暴露的其它資料結構類似,set的底層實現,隨著元素型別是否是整型以及新增的元素的數目...