小编典典

当值的得分大于目标排序集中存在的最高得分时,zadd的时间复杂度

redis

如果将一个值加到一个排序的集合(redis)上的每个值都是得分最高的值,那么时间复杂度是否O(log(N))适用于每个值zadd

或者,对于这种边缘情况,redis会执行优化(例如,例外情况scorescore,该值高于集合中的最高值,只需将值添加到最高点)?

实际上,我之所以这样问,是因为我在应用中保留了一个全局排序集,其中值zadded以自时代开始的时间作为分数。我想知道这是否仍然会O(log(N))还是会更快?


阅读 443

收藏
2020-06-20

共1个答案

小编典典

一旦排序集超过了zset-max- ziplist-*配置指令设置的阈值,它将被编码为跳过列表。由于需要保持跳过列表的较高级别,因此无法针对这种情况优化插入。对源代码的粗略检查表明,正如预期的那样,没有以任何特殊方式对其进行处理。

2020-06-20