在文章【Redis】不卡壳的 Redis 学习之路:从十大数据类型开始入手中我们介绍了Redis常用的10大数据类型,这10大数据类型可并不是直接在底层通过代码实现的,而是通过不同的底层数据结构组合起来的,这篇我们介绍下Redis常用数据类型的底层数据结构( ̄? ̄)/
网站地址
Redis根目录下src文件夹📁
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的API。
参考书籍推荐
Github官网
从官网可以看到对于部分关键的.c
文件的介绍,最重要的两个:dict.c
、object.c
Redis是key-value存储系统
key一般都是string类型的字符串对象
value则为Redis对象(redisObject)
在Redis的逻辑中,服务(redisServer)启动加载数据库(redisDb),然后去读取字典(dict),然后去找哈希(dictht),就像Java中的那句——一切皆对象,在Redis中一切皆K-V(dict字典)。
Redis是由C语言编写的,想要深入了解Redis的数据结构,就不得不简单介绍下C语言的文件类型📃(因为接下来我们需要在一堆源码中找到我们需要的文件)和struct结构体(学习数据类型的底层实现)。
struct [structure tag] { member definition; member definition; ... member definition; } [one or more structure variables];
structure tag 是可选的,每个 member definition 是标准的变量定义,在结构定义的末尾,最后一个分号之前,可以指定一个或多个结构变量(是可选的),举个🌰方便大家理解:
struct Books { char title[50]; char author[50]; int book_id; } book;
了解这些基础的内容以后,接下来我们就开始深入到Redis数据结构底层的C语言进行源码分析
( ̄? ̄)/🎉~~~