Redis 的数据结构的使用真的是美极了,笔者本人不是 redis 的专家,只是兴趣看了下源码,总结了一下他们之间的实现关系如上图所示。可能不全,供参考。
建议看看源码以及分析,这完全是数据结构之美,时间和空间的权衡和折中。例如 hash 折中数据结构,元素少的时候,内存存储用的是 ziplist,这样是用时间换空间,但是元素多的时候,用的是 dict,又是用空间换时间。还用了我认为最简单漂亮的数据结构跳表。
左边是 Redis 暴露给用户的数据结构:
String
Hash
List
Set
Sort Set 右边是 Redis 内部实现的数据结构:
sds
dict
ziplist
quicklist
skiplist
intset