数据结构论坛

首页 » 分类 » 定义 » 详解Redis数据结构及应用场景
TUhjnbcbe - 2024/7/28 16:43:00
白癜风用药 https://m.39.net/pf/a_4929171.html

1.概述

Redis不是一个普通的key-value存储器,它实际上是一个支持不同类型的值数据结构服务。虽然在传统的key-value服务中,将字符串键与字符串值相关联,但在Redis中值不仅限于简单的字符串,还可以保存更复杂的数据结构。

2.Redis底层数据存储结构

2.1Redis是一个键值对(key-valuepair)数据库服务器

Redis内部整体的存储结构是一个大的HashMap,key冲突通过链表去实现,每个dictEntry为一个key/value对象,value为RedisObject。

RedisServer--RedisDB(dict)--dictht--dicEntry--redisObject--DataTypes

redisServer:默认包含16个redisDb

redisDb:*dict该数据库的键空间

dictht:通过两个Hashtables存储键值对数据

ht[0]:存储正常情况下的所有数据

ht[1]:只有ReHash过程中使用

dicEntry:在dict.h文件中定义dictEntry**table数组,每个元素单个键值对指针,还包含下一个Entry指针,

redisObject-prt:具体的数据结构指针

dictEntry:存储key-value的地方,dictEntry结构体

typedefstructdictType{uint64_t(*hashFunction)(constvoid*key);//hashthegivenkeyvoid*(*keyDup)(void*privdata,constvoid*key);//copykeyvoid*(*valDup)(void*privdata,constvoid*obj);//copyvalueint(*keyCompare)(void*privdata,constvoid*key1,constvoid*key2);//

1
查看完整版本: 详解Redis数据结构及应用场景