在Redis中,某些操作(例如SINTERSTORE
)
时间复杂度: O(N * M)最坏情况,其中N是最小集合的基数,M是集合数。
在我的用例中,我希望每组比较超过15,000个项目。对这些集合执行N * M操作将是O(30,000)。操作没有时间要求,这意味着我不在乎需要多长时间。我的问题是,当计算发生时,我的Redis是否会锁定。有什么想法吗?
答案 0 :(得分:2)
简单的答案是“是”,因为Redis基于单线程架构。
非简单的答案是“它取决于” - 如果您以优化的方式对Redis进行分片,只会阻止执行此复杂操作的分片,而其他分片则不会。
答案 1 :(得分:1)
Redis是单线程的。它不会锁定任何内容,但在完成之前它不会处理任何其他命令。所以就像Redis被锁定一样,我认为这就是你的意思。
另请参阅:Locking and Redis