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