我檢討下面的代碼正試圖:.NET StackExchangeRedis和批次執行順序不能保證?
- 的鍵/值添加到Redis的分貝。
- 設置該新的redis密鑰到期。
即
{
var batch = database.CreateBatch();
var tasks = new Task[]
{
batch.SetAddAsync(key, value, flags),
batch.KeyExpireAsync(key, expiry, flags)
};
batch.Execute();
await Task.WhenAll(tasks)
}
做到這一切在一個單一的Redis Batch
。
我的印象是,你不能假設命令,當它涉及到配料,更不用說多任務async/await
。
因此,可能會出現以下順序:
KeyExpiresAsync
< - 關鍵還不存在。SetAddAsync
< - 密鑰不存在。鍵被創建。然後成員加入密鑰。
我希望也不希望訂單得到保證,意思是說,它試圖儘可能快地平行化。
所以 - 我的理解是否正確或錯位?
https://stackoverflow.com/a/30083293/34092有幫助嗎? – mjwills