Data structures rediszset定位记录

Data structures rediszset定位记录,data-structures,redis,skip-lists,zset,Data Structures,Redis,Skip Lists,Zset,为什么redis可以在日志(n)时间内按分数和键在zset中找到记录?redis是否为zset存储了两个索引 我想如果我们有一个skiplist,它通过键来确定记录,那么我们只能通过这个键来索引 SkipNode key k1 #value k2 #score |------------------------------> | |-... | |------------->|

为什么redis可以在日志(n)时间内按分数和键在zset中找到记录?redis是否为zset存储了两个索引

我想如果我们有一个skiplist,它通过键来确定记录,那么我们只能通过这个键来索引

SkipNode
   key
     k1  #value
     k2  #score


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

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

为什么redis可以在日志(n)时间中通过分数和键在zset中找到记录?Z

按键搜索的时间复杂度为O(1),按分数搜索的时间复杂度为O(log(n))

redis是否为zset存储了两个索引

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

为什么redis可以在日志(n)时间中通过分数和键在zset中找到记录?Z

按键搜索的时间复杂度为O(1),按分数搜索的时间复杂度为O(log(n))

redis是否为zset存储了两个索引


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

谢谢,这很有意义:-)谢谢,这很有意义:-)