开篇:Redis 快的秘密藏在数据结构里
上一篇我们学了 Redis 的核心用法,知道了 String、Hash、List、Set、ZSet 各自适合什么场景。但你有没有想过:为什么 Hash 小的时候特别省内存?为什么 ZSet 的范围查询能做到 O(log N)?为什么 Redis 不用 C 语言原生的 char* 而要自己搞一个 SDS?
这些问题的答案都藏在底层数据结构里。这篇文章,我们就深入 Redis 内部,看看它到底是怎么把数据组织起来的。
一、Redis 的数据存储结构
在 Redis 中,每个键值对都会有一个 dictEntry,里面存着指向 Key 和 Value 的指针。Key 统一用 SDS(简单动态字符串)存储,Value 则存储在 redisObject 结构体中。
大约 17 分钟