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是渐进式的,分屡次完成

相关文章
相关标签/搜索