Redis 源码分析:dict.c 和 dict.h
程序员文章站
2022-06-12 14:45:42
...
哈希表是 redis 的核心结构之一,在 redis 的源码中, dict.c 和 dict.h 就定义了 redis 所使用的哈希结构,在这篇文章中,我们将
简介
哈希表是 redis 的核心结构之一,在 redis 的源码中, dict.c 和 dict.h 就定义了 redis 所使用的哈希结构,在这篇文章中,我们将对 dict.c 和 dict.h 进行注解和分析,籍此加深对 redis 的理解。
因为 dict.c 中使用的 separate chaining 哈希表实现可以在任何一本算法书上找到,因此,在本文中没有对查找和增删等操作做过多的着墨,而是将重点放到整个字典结构的运作流程,以及哈希表的渐进式 rehash 操作上。
数据结构概览
dict.h 中定义了被 dict.c 的程序所使用的几个数据结构,如 dict 、dictht 和 dictEntry 等,它们之间的关系可以用下图来描述(点击放大):
数据结构实现细节
上一节的大图给出了数据结构之间相互关系,现在,让我们将注意力集中到 dict 、 dictht 和 dictEntry 这三个核心数据结构上面。
dict 结构的定义如下:
推荐阅读
-
scrapy-redis源码分析之发送POST请求详解
-
vuex 源码分析(一) 使用方法和代码结构
-
ArrayList源码和多线程安全问题分析
-
Swoft源码之Swoole和Swoft的分析
-
PHP strtotime函数用法、实现原理和源码分析
-
Mybaits 源码解析 (九)----- 全网最详细,没有之一:一级缓存和二级缓存源码分析
-
JAVAEE——宜立方商城06:Redis安装、数据类型和持久化方案、Redis集群分析与搭建、实现缓存和同步
-
jQuery 源码分析(四) each函数 $.each和$.fn.each方法 详解
-
vuex 源码分析(七) module和namespaced 详解
-
MapReduce之Job提交流程源码和切片源码分析