Redis-存储底层数据结构-ziplist ziplist.c的开头注释这一段注释大概解析了一下ziplist基本构成。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778ZIPLIST OVERAL 2024-10-28 redis
Redis-存储底层数据结构-SDS 接下来一系列的文章可能会看一看redis的源码,主要是为了学习下优秀软件的设计思路。 为什么需要SDS?C语言没有像其他语言一样的string类,有原生的字符串。C语言可以用char*存储字符串,并以"\0"结尾。但是 char*原生的增 也就是strcat在char数组长度不够的时候会溢出,即不存在拓容机制。 以 "\0"结尾所带来的后果就是字符串中间无法 2024-10-15 redis
Redis-存储底层数据结构-哈希表 本文主要分析redis存储的底层哈希表。即src/dict.c , src/dict.h 哈希的存储结构这是最底层的存储kv的结构体dictEntry,中间的union可以共享内存,也就是如果是uint64_t, int64_t, double 则是直接与key存在一起,用val存储地址。 12345678910typedef struct dictEntry { void 2024-10-15 redis
git内部存储原理 cs61b的一个实验是mini-git,借此看看git内部是如何存储数据的。 Git对象blob objectGit内部对象的存储是一个kv库。key为SHA-1的哈希值,value为具体文件。接下来我们通过一个小小的实验来看看。首先需要初始化一个git仓库。 1234567$ go init testInitialized empty Git repository in /demo/test/ 2024-06-10 git