6

在 Redis 中,一些操作如SINTERSTOREhave

时间复杂度: O(N*M) 最坏情况,其中 N 是最小集合的基数,M 是集合的数量。

在我的用例中,我希望比较每组超过 15,000 个项目。对这些集合执行 N*M 操作将是 O(30,000)。手术没有时间要求,这意味着我不在乎需要多长时间。我的问题是在进行此计算时我的 Redis 是否会锁定。有任何想法吗?

4

2 回答 2

2

简单的答案是“是”,因为 Redis 基于单线程架构。

不简单的答案是“视情况而定”——如果您以优化的方式对 Redis 进行分片,则只有执行此复杂操作的分片会被阻止,其他分片不会。

于 2013-09-24T20:18:29.360 回答
1

Redis 是单线程的。它不会锁定任何东西,但在该命令完成之前它不会处理任何其他命令。所以就好像 Redis 被锁定了,我想这就是你的意思。

另请参阅:锁定和 Redis

于 2013-09-24T20:14:31.037 回答