2015-04-24 39 views
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時。推遲重新啓動後,它會卡住。使用批處理而不是事務時會出現同樣的問題。

我在做連接到多路複用器錯誤還是錯誤? (我發現幾乎看起來很相似,但我不確定)

+0

這表明這些任務沒有被標記爲在某些代碼路徑中完成 - 我將不得不調查 –

回答

相關問題