当值的得分大于目标排序集中存在的最高得分时,zadd的时间复杂度
如果将一个值加到一个排序的集合(redis)上的每个值都是得分最高的值,那么时间复杂度是否O(log(N))
适用于每个值zadd
?
或者,对于这种边缘情况,redis会执行优化(例如,例外情况score
是score
,该值高于集合中的最高值,只需将值添加到最高点)?
实际上,我之所以这样问,是因为我在应用中保留了一个全局排序集,其中值zadded
以自时代开始的时间作为分数。我想知道这是否仍然会O(log(N))
还是会更快?
回答:
一旦排序集超过了zset-max-
ziplist-*配置指令设置的阈值,它将被编码为跳过列表。由于需要保持跳过列表的较高级别,因此无法针对这种情况优化插入。对源代码的粗略检查表明,正如预期的那样,没有以任何特殊方式对其进行处理。
以上是 当值的得分大于目标排序集中存在的最高得分时,zadd的时间复杂度 的全部内容, 来源链接: utcz.com/qa/404211.html