2014-09-18 85 views

回答

0

Redis文档没有描述这样的优化。

时间复杂度:您链接到的ZRANGEBYSCORE状态(加重语气)页面 有序集合O(日志(N)+ M),N为元素的数量和M的数元素正在返回。 如果M是 常数(例如总是询问具有LIMIT的前10个元素),则可以将其认为是O(log(N))

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

+0

“ZRANGEBYSCORE”实现的完整代码可以在这里找到(https://github.com/antirez/redis/blob/209f266cc534471daa03501b2802f08e4fca4fe6/src/t_zset.c#L2202)。 – 2014-09-18 18:41:19

2

如果您试图获得最高得分以至于ZRANGE的复杂性成为问题,请缓存独立于排序集合的最高分数,然后您可以通过O(1)得到它。

+0

这是一个不错的简单解决方案。 – 2014-09-18 20:08:35

相关问题