Redis内部数据结构总结(2)dict

     dict是redis一个非常重要的基础数据结构,dict用来维护key和value映射关系的数据结构,与很多语言中的Map或者dictionary类似。

         redis的一个database中所有key到value的映射,就是一个dict来维护的。

另外,当redis中的hash结构数据较多时,hash的底层会从ziplist转为dict

当redis中的sorted set 数据较多时,sorted set的底层从ziplist转为dict+ skiplist。


         基于哈希表的查找性能非常高效,redis中,dict采用哈希算法从key计算得到在哈希表中的位置,采用拉链法解决冲突,并在装载因子到达阈值时自动扩展内存,引发重哈希。

         reids的dict的非常重要的一个特点是它的重哈希,dict的重哈希是一种增量式重哈希,在需要扩展内存的时候避免一次性对所有key进行重哈希,而是将重哈希操作分散到对于dict的各个增删改查操作中去。这种方法能做到每次只对一小部分key进行重哈希,而每次重哈希之间不影响dict的操作。这种设计避免了重哈希期间单个请求的响应时间剧烈增加。

         为了增量重哈希,dict的数据结构里包含两个哈希表。在重哈希期间,数据从第一个哈希表向第二个哈希表迁移。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值