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

标签 redis time-complexity

如果添加到有序集合 (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/

相关文章:

node.js - Upstart 和 init.d 优先级

ruby - 在不同服务器上执行多项任务的作业

python - 阶乘数字和谜题、时间复杂度调查

algorithm - 有效地在双向链表中搜索具有指针约束的值?

hadoop - 了解 stackoverflow 底层软件基础设施

node.js - 整洁的回调 node.js

Redis - 为什么 redis-server 内存减少?

java - 哪个更贵 : using variables or using for loop instead of declaring variables to hold temp results?

c++ - 合并 K 排序数组/vector 的复杂性

algorithm - 以特殊方式设置不相交?