繁体   English   中英

Redis Zset 定位记录

[英]Redis Zset Locate record

为什么 redis 可以通过分数和键在 log(n) 时间内定位 zset 中的记录? redis 实际上是否为 zset 存储了两个索引?

我想如果我们有一个通过其键确定记录的跳过列表,我们只能按此键进行索引。

SkipNode
   key
     k1  #value
     k2  #score


  |------------------------------>   |
  |-...                              |
  |------------->|-------...---------|
skipNode1 -> skipNode2 -> ... skipNodeN

我们只能通过键定位记录,在最左边,(k1,k2),顺序,我们如何只通过k2索引记录?

为什么 redis 可以在 log(n) 时间内通过 score 和 key 定位 zset 中的记录?

key 搜索的时间复杂度是 O(1),score 是 O(log(n))。

redis 实际上是否为 zset 存储了两个索引?

是的,它有两个索引。 键的 hash 索引和分数的跳过列表索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM