如果添加到有序集合 (redis) 中的每个值都是得分最高的值,那么每个 zadd
的时间复杂度是否为 O(log(N))
>?
或者,对于这种边缘情况,redis 执行优化(例如,在 score
高于集合中最高 score
的情况下,只需添加值在最高点)?
实际上,我问是因为我在我的应用程序中保留了一个全局排序集,其中的值是zadded
,自纪元以来的时间作为分数。我想知道这是否仍然是 O(log(N))
,还是会更快?
最佳答案
一旦 Sorted Set 的增长超过 zset-max-ziplist-*
配置指令设置的阈值,它就会被编码为 skip list .由于需要维护跳过列表的上层,因此针对这种边缘情况优化插入似乎是不可能的。粗略回顾 source code表明,正如预期的那样,这没有以任何特殊方式处理。
关于redis - 当值的得分大于目标排序集中存在的最高得分时 zadd 的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40870081/