Redis内部数据结构总结(2)dict
2016-11-04 14:41
316 查看
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的数据结构里包含两个哈希表。在重哈希期间,数据从第一个哈希表向第二个哈希表迁移。
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的数据结构里包含两个哈希表。在重哈希期间,数据从第一个哈希表向第二个哈希表迁移。
相关文章推荐
- Redis内部数据结构总结(3)ziplist
- Redis 内部数据结构详解(1):dict
- Redis内部数据结构总结(1)sds和robj
- Redis内部数据结构详解之字典(dict)
- Redis内部数据结构详解(1)——dict
- Redis内部数据结构总结(5)skiplist
- redis内部数据结构总结(7)intset
- redis内部数据结构详解之字典dict
- Redis内部数据结构详解之字典(dict)
- Redis内部数据结构总结(4)quicklist
- Redis内部数据结构详解之字典(dict)
- 【Redis源码剖析】 - Redis内置数据结构之字典dict
- redis内部数据结构--简单动态字符串sds
- Redis内部数据结构的实现
- redis数据结构之dict 概要
- redis源码分析 dict字典的实现和内部应用
- redis底层数据结构之dict 字典2
- Redis数据库各种数据结构的内部实现。
- Redis底层数据结构总结
- redis+php微博功能的redis数据结构设计总结(四)