2013-09-24 58 views
6

在Redis的,一些操作,如SINTERSTORE具有做長時間運行的操作鎖定redis?

時間複雜度: O(N * M)最壞其中N是最小集合的基數M是組數的情況。

在我的使用案例中,我預計將比較每組15,000個以上的項目。對這些集合執行N * M操作應該是O(30,000)。操作沒有時間要求,這意味着我不在乎需要多長時間。我的問題是在計算髮生時我的Redis是否會鎖定。有任何想法嗎?

回答

2

簡單的答案是「是」,因爲Redis的是基於單線程架構。

非簡單的答案是「它取決於」 - 如果您以優化的方式分割您的Redis,則只有執行此複雜操作的分片被阻止,其他分片則不會。

1

Redis是單線程的。它不鎖定任何東西,但它不會處理任何其他命令,直到完成。所以就好像Redis被鎖定了,我認爲這就是你的意思。

參見:Locking and Redis

相關問題