博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redis数据结构-字典
阅读量:6891 次
发布时间:2019-06-27

本文共 584 字,大约阅读时间需要 1 分钟。

hot3.png

Redis的字典使用哈希表作为底层实现,一个哈希表里面有n个哈希节点,每个节点里面存储着key-value键值对

1、哈希表

    哈希表数据结构,下图:

    160746_VDBa_172871.png

            一个空的哈希表,如下图:

    160839_usLX_172871.png

2、哈希表节点

    数据结构,如下:

    161039_Ru1D_172871.png

3、哈希表总结构

    161229_6G4S_172871.png

        当多个key的hash值相同的时候,哈希表采用链式方式来解决冲突,每个哈希表节点都有一个next指针,指向下一个key的hash值相同的节点,这样,hask值相同的哈希表节点就构成了一个单向链表

4、字典

    4.1、数据结构

    161331_afyH_172871.png

    字典中包含2个哈希表,一般情况下只使用ht[0]哈希表,ht[1]只会在对ht[0]做rehash的时候使用

    4.2、字典的结构

    162258_1v0E_172871.png

5、rehash

    当ht[0]随着操作的不断进行,为了让哈希表维持在一个合理的范围,会对哈希表做相应的扩展或收缩操作

    5.1、扩展

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

    5.2、收缩

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

    将保存在htp[0]的键值对全部rehash到ht[1],然后清空ht[0],将ht[1]设置成ht[0],在新的ht[1]上创建一个新的哈希表,待下一次rehash使用

当然rehash是渐进式的,分多次完成

转载于:https://my.oschina.net/u/172871/blog/536534

你可能感兴趣的文章
8.8 Spring Boot静态资源处理
查看>>
从源码的角度看 React JS 中批量更新 State 的策略(上)
查看>>
马云率队夜访茅台:打造中国大数据合作的经典样板
查看>>
SOP 1.3.0 发布,开放平台解决方案项目
查看>>
中国学者世界首创:可视化“心脏芯片”问世,登Science机器人子刊论文
查看>>
为防止用户自定义Bixby按键,三星先给T-Mobile用户的S8发送更新
查看>>
在VR领域风生水起的创新企业大盘点
查看>>
【全球AI实力排行】中美英法俄德五强开展新一轮“太空竞赛”
查看>>
有这5小段代码在手,轻松实现数据可视化(Python+Matplotlib)
查看>>
使用Jayrock开源组件开发基于JSON-RPC协议的接口
查看>>
将完整的Maven远程存储库下载到本地存储库(别试了,不太可取)
查看>>
RabbitMQ-从基础到实战(3)— 消息的交换(上)
查看>>
迪士尼研究院用深度学习打造语音动画,让VR社交更真实
查看>>
无人机飞行规则的制定已经迫在眉睫
查看>>
python内置函数:enumerate用法总结
查看>>
样式雷家的大宅子在今天四环路主路下:《北京的隐秘角落》|3星
查看>>
git与svn的区别 ?Git 与 SVN那个更好?
查看>>
nginx
查看>>
多核时代 .NET Framework 4 中的并行编程2---任务并行库之Task (上)
查看>>
函数中指针和引用的形参和实参
查看>>