每個(gè)字典的底層采用哈希表實(shí)現(xiàn)钧汹,每個(gè)字典帶有兩個(gè)哈希表捉邢,一個(gè)平常使用墩朦,一個(gè)僅在rehash時(shí)使用。redis使用murmurHash2算法來(lái)計(jì)算hash值
漸進(jìn)式rehash
字典的刪除棕所,更新,查找會(huì)在兩個(gè)表上進(jìn)行辨宠,而新增只會(huì)在新的表中進(jìn)行遗锣。
以查找為例,會(huì)先在ht[0]中查找嗤形,找不到去ht[1]中找精偿。
這樣的話可以保證ht[0]只增不減,最終全部轉(zhuǎn)移到ht[1]中赋兵。
redis數(shù)據(jù)庫(kù)的底層通過(guò)字典結(jié)構(gòu)來(lái)實(shí)現(xiàn)