为什么redis可以同时根据score和key在log(n)时间的zset中定位一条记录?redis是否真的为zset存储了两个索引?
我想,如果我们有一个跳过列表,它通过记录的键来确定记录,那么我们只能通过这个键来索引。
SkipNode
key
k1 #value
k2 #score
|------------------------------> |
|-... |
|------------->|-------...---------|
skipNode1 -> skipNode2 -> ... skipNodeN我们只能通过键来定位记录,在最左边,(k1,k2),order,我们如何才能仅通过k2来索引记录呢?
发布于 2021-03-15 10:13:41
为什么redis可以同时根据分数和关键字在log(n)时间内找到zset中的记录?z
按键搜索的时间复杂度为O(1),按分数搜索的时间复杂度为O(log(n))。
真的为一个zset存储两个索引吗?
是的,它有两个索引。关键字的散列索引,以及分数的跳跃列表索引。
https://stackoverflow.com/questions/66631465
复制相似问题