1
我不確定,無論是錯誤還是我做錯了什麼。下面是代碼:使用StackExchange.Redis連接到redis失敗後,事務無法正常工作
using StackExchange.Redis;
ConnectionMultiplexer conn = null;
while (conn == null);
{
try
{
conn = ConnectionMultiplexer.Connect("localhost:6379");
}
catch (Exception)
{
conn = null;
Thread.Sleep(TimeSpan.FromSeconds(5));
}
}
var db = conn.GetDatabase();
var transaction = db.CreateTransaction();
var tasks = new List<Task>();
tasks.Add(transaction.HashSetAsync("key", "field", "value"));
if (transaction.Execute())
{
Task.WaitAll(tasks.ToArray());
}
當我開始Redis的運行它(Windows版本 - 2.6,17年2月8日,2.8.19),一切工作正常。如果我在循環的幾個循環後啓動redis,它不會跳轉到if語句中,或者它會跳轉並在WaitAll()上被阻塞。如果我嘗試檢查redis中的值,它們將被存儲。
這種情況發生在我們啓動服務器並忘記啓動redis時。推遲重新啓動後,它會卡住。使用批處理而不是事務時會出現同樣的問題。
我在做連接到多路複用器錯誤還是錯誤? (我發現幾乎看起來很相似,但我不確定)
這表明這些任務沒有被標記爲在某些代碼路徑中完成 - 我將不得不調查 –