Redis常見容器

Redis常見容器

簡單動態字符串

image-20200505145909480

優勢:

  • 嘗試複雜度獲取字符串長度
  • 杜絕緩衝區溢出
  • 減少修改字符串時帶來的內存重分配次數
    • 空間預分配
    • 惰性空間釋放
  • 二進制安全(保存二進制文件)
  • 兼容部分C字符串函數

鏈表

鏈表節點:

image-20200505150925828

鏈表頭:

image-20200505151129336

字典

哈希表

image-20200505151308350
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-UnrtdubH-1588829887895)(https://i.loli.net/2020/05/05/CxAloVG2nQZzs5T.png)]

哈希表節點:

image-20200505151558144

字典

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-YhMPSZSy-1588829902652)(https://i.loli.net/2020/05/05/CUWRl3bwmtA4ZhX.png)]

哈希算法與衝突解決

哈希計算:

# 使用字典設置的哈希函數,計算鍵key的哈希值
hash = dirct->type->hashFunction(key);
# 使用哈希表的sizemaks屬性和哈希值,計算出索引值	根據情況不同,hx[x]可以時hx[0]或hx[1]
index = hash & dict->hx[x].sizemask;

衝突解決:

​ 鏈地址法解決衝突

Rehash

條件:

image-20200505153405197

過程:

image-20200505153113464

方式:

​ 漸進式rehash

跳躍表

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-MVmRBMPm-1588829918203)(https://i.loli.net/2020/05/05/LkcMAQSdGbFCutl.png)]

image-20200505154234961

整數集合

image-20200505154506023

升級:

​ 每當我們要將一個新元素添加到整數集合裏面,並且新元素的類型比整數集合現有所有元素的類型都要長時,整數集合需要先進行升級( upgrade),然後才能將新元素添加到整數集合裏面。

升級的優勢:

  • 提升靈活性
  • 節約內存

壓縮列表

image-20200505155346853

節點:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-R7gcUJEu-1588829864360)(https://i.loli.net/2020/05/05/pUagD1d8C9Yh4No.png)]

previous_entry_length:

​ 節點的 previous_entry_length屬性以字節爲單位,記錄了壓縮列表中前一個節點的長度。 previous_entry_length屬性的長度可以是1字節或者5字節:

  • 屬性長度
    • 當前一節點長度小於254字節時,採用1字節空間存儲前一節點的長度
    • 當前一節點長度大於等於255字節時,採用5字節空間存儲前一節點的長度

encoding:

​ 節點的encoding屬性記錄了節點的content屬性所保存數據的類型以及長度。

  • 屬性長度
    • 一字節、兩字節或者五字節長,值的最高位爲00、01或者10的是字節數組編碼:這種編碼表示節點的 content屬性保存着字節數組,數組的長度由編碼除去最高兩位之後的其他位記錄
    • 一字節長,值的最高位以11開頭的是整數編碼:這種編碼表示節點的 content屬性保存着整數值,整數值的類型和長度由編碼除去最高兩位之後的其他位記錄;

content:

​ 節點的 content屬性負責保存節點的值,節點值可以是一個字節數組或者整數,值的類型和長度由節點的 encoding屬性決定。

連鎖更新問題:

插入時的連鎖更新:

image-20200505165535969

刪除時的連鎖更新:

image-20200505165825566
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-t7icwbJI-1588830055837)(https://i.loli.net/2020/05/07/DRX7qdWCPVeBsSU.png)]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章