我的代码需要经常从一组有序的Redis中获得最高分。
zrangebyscore的时间复杂度为O(logN):http://redis.io/commands/zrangebyscore。 由于我只想获得最高分,因此Redis会优化它以在O(1)时间内返回最高分吗?
答案 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))。