在Redis的,一些操作,如SINTERSTORE
具有做長時間運行的操作鎖定redis?
時間複雜度: O(N * M)最壞其中N是最小集合的基數M是組數的情況。
在我的使用案例中,我預計將比較每組15,000個以上的項目。對這些集合執行N * M操作應該是O(30,000)。操作沒有時間要求,這意味着我不在乎需要多長時間。我的問題是在計算髮生時我的Redis是否會鎖定。有任何想法嗎?
在Redis的,一些操作,如SINTERSTORE
具有做長時間運行的操作鎖定redis?
時間複雜度: O(N * M)最壞其中N是最小集合的基數M是組數的情況。
在我的使用案例中,我預計將比較每組15,000個以上的項目。對這些集合執行N * M操作應該是O(30,000)。操作沒有時間要求,這意味着我不在乎需要多長時間。我的問題是在計算髮生時我的Redis是否會鎖定。有任何想法嗎?
簡單的答案是「是」,因爲Redis的是基於單線程架構。
非簡單的答案是「它取決於」 - 如果您以優化的方式分割您的Redis,則只有執行此複雜操作的分片被阻止,其他分片則不會。
Redis是單線程的。它不鎖定任何東西,但它不會處理任何其他命令,直到完成。所以就好像Redis被鎖定了,我認爲這就是你的意思。