innodb为什么选择B+ Tree而不是跳表,Redis为什么选择跳表而不是B+ Tree-腾讯云开发者社区-腾讯云

redis 读写全在内存中,不涉及磁盘 IO,无需考虑索引层高度,同时由于跳表实现起来更加简单,相比B+ tree而言,少了选择树结构的开销,因此redis使用跳表来实现zset,而不是B+ tree。

Redis 是基于内存的数据库,因此不需要考虑磁盘IO,所以索引层数在redis看来就不再是跳表的劣势了

因此,redis最终选择的是跳表,而不是B+ tree。

由于跳表的查询复杂度在O(logn),因此redis中zset数据类型底层结合使用skiplist和hash,用空间换时间,利用跳表支持范围查询和有序查询,利用hash支持精确查询。