Redis:从排序集中获得最高分成员仍然是O(logN)吗?

时间:2014-09-18 18:22:45

标签: redis

我的代码需要经常从一组有序的Redis中获得最高分。

zrangebyscore的时间复杂度为O(logN):http://redis.io/commands/zrangebyscore。 由于我只想获得最高分,因此Redis会优化它以在O(1)时间内返回最高分吗?

2 个答案:

答案 0 :(得分:2)

如果你试图获得最高分,ZRANGE的复杂性是一个问题,那么独立于排序的集合缓存最高分,你就可以用O(1)来获得它。

答案 1 :(得分:0)

Redis文档没有描述这样的优化。您链接到ZRANGEBYSCORE州的页面(重点已添加):

  

时间复杂度: O(log(N)+ M),其中N是元素的数量   排序集和M返回的元素数。 如果M是   常数(例如总是要求LIMIT的前10个元素),   您可以将其视为O(log(N))。

鉴于此,似乎时间复杂度不会是O(1),除非您的有序集合只包含一个元素。相反,时间复杂度将取决于有序集合中的元素数量,并且仍然是O(log(N))。