redis數據結構-字典

Redis的字典使用哈希表做爲底層實現,一個哈希表裏面有n個哈希節點,每一個節點裏面存儲着key-value鍵值對
數據結構

一、哈希表
spa

    哈希表數據結構,下圖:
指針

    

            一個空的哈希表,以下圖:
hash

    

二、哈希表節點
擴展

    數據結構,以下:
sed

    

三、哈希表總結構im

    

        當多個key的hash值相同的時候,哈希表採用鏈式方式來解決衝突,每一個哈希表節點都有一個next指針,指向下一個key的hash值相同的節點,這樣,hask值相同的哈希表節點就構成了一個單向鏈表鏈表

四、字典總結

    4.一、數據結構
next

    

    字典中包含2個哈希表,通常狀況下只使用ht[0]哈希表,ht[1]只會在對ht[0]作rehash的時候使用

    4.二、字典的結構

    

五、rehash

    當ht[0]隨着操做的不斷進行,爲了讓哈希表維持在一個合理的範圍,會對哈希表作相應的擴展或收縮操做

    5.一、擴展

        ht[1].size = ht[0].used*2的n次方

    5.二、收縮

    ht[1].size = 第一個大於等於ht[0].used的2的n次方

    將保存在htp[0]的鍵值對所有rehash到ht[1],而後清空ht[0],將ht[1]設置成ht[0],在新的ht[1]上建立一個新的哈希表,待下一次rehash使用

固然rehash是漸進式的,分屢次完成

相關文章
相關標籤/搜索