潍坊市论坛

首页 » 分类 » 分类 » Redis底层数据结构字典
TUhjnbcbe - 2021/8/14 16:44:00
中科技术让白癜风患者早绽笑容 http://www.zhuedu.net/bdffz/bdfbj/1661.html

每天一个开发小知识

本文为《Redis设计与实现》学习笔记

开局一张图

上图为Redis字典的数据结构

字典是Redishash的底层实现之一

字典(dict)的数据结构

typedefstructdict{dictType*type;void*privdata;dicththt[2];inttrehashidx;}dict;

其中

type:dictType保存了一簇用于操作特定类型键值对的函数

privdata:保存需要传给那些类型特定函数的可选参数

ht:指向哈希表,双buf结构,用于rehash操作

trehashidx:rehash标识,当值为-1时表示目前没有进行rehash

哈希表(dictht)的数据结构

typedefstructdictht{dictEntry**table;unsignedlongsize;unsignedlongsizemask;unsignedlongused;}dicthth;

其中

table:数组,元素为指向哈希表节点的指针

size:table数组的大小

sizemask:掩码,值为size-1,用于计算key在table中的下标

used:table中含有的哈希表节点数量

哈希表节点(dictEntry)的数据结构

typedefstructdictEntry{void*key;union{void*val;uint64_tu64;int64_ts64;}v;structdictEntry*next;}dictEntry;

其中

key:键

v:值

next:指向下一个哈希表节点,用于解决hash冲突

每天一个开发小知识,今天你学废了吗?

预览时标签不可点收录于话题#个上一篇下一篇
1
查看完整版本: Redis底层数据结构字典