《Redis设计与实现》第四章 字典

字典又称为哈希,由一个k-v键值对组成。

set msg "hello world"

4.1 字典实现

Redis的字典使用哈希表作为底层实现,一个哈希表里面有多个哈希表及诶单,每个哈希表节点就保存了字典中的一个键值对。

4.1.1 哈希表

-w701
-w812

4.1.2 哈希表节点

-w732
利用链哈希解决哈希冲突问题
-w713

4.1.3 字典

-w691
-w638

4.2 哈希算法

-w681
-w636

使用的是MurmurHash2算法来计算键的哈希值

4.3 哈希冲突

链地址法来解决哈希冲突。
-w648

4.4 reHash

为了让哈希表的负载因子维持在一个合理的范围之内,当哈希表保存的键值对数量太多或者太少时,需要对哈希表的大小进行收缩扩折狂战。

扩展的就是2的n次方幂
-w742
-w771
那就是 有一个h[1]的哈希索引来构造。

-w638

哈希表的扩展与收缩
当一下条件中的任意条件被满足时,程序将自动对哈希表执行扩展操作。

-w743

4.5 渐进式rehash

-w755
-w734

渐进式rehash执行期间的哈希表操作,查找会现在h[0]再到h[1]添加就一律添加到h[1]中了。

4.6 字典API

-w766
-w762

4.7 重点回顾

  • 字典被广泛应用于实现Redis的各种功能其中包括数据库和哈希键
  • redis的字典用哈希表作为底层实现,每个字典带有两个哈希表,一个平时使用,一个在进行rehash时使用
  • 当字典被用作数据库的底层实现,或者哈希键底层是现实,使用murmurhash2算法计算哈希值
  • 利用链哈希的方法来处理哈希冲突
  • 在rehash时,是渐进式操作,而不是一次性操作的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值