我在多線程環境下批量創建Redis dB中的密鑰,出於某種原因在我的ASP .NET MVC Web應用程序。
而我爲redis客戶端使用ServiceStack.Redis。批量在Redis C#中創建密鑰 - SocketException:通常只允許使用每個套接字地址(協議/網絡地址/端口)
我創建了所有必需的Redis的操作,即把一個靜態類,得到..
在靜態類,我創建的Redis正在爲其配置一旦通話結束每次調用一個新的實例(使用使用)
代碼是這樣:
for (int i = 0; i < 100000; i++)
{
using (RedisClient Client = new RedisClient(_ReplicaHost))
{
Client.AddItemToSet(key, value);
}
}
然而,一段時間後,我獲得以下錯誤:
ServiceStack.Redis.RedisException: could not connect to redis Instance at xxx-xxx.xxxx.0001.use1.cache.amazonaws.com:6379 ---> System.Net.Sockets.SocketException: Only one usage of each socket address (protocol/network address/port) is normally permitted xxx.xx.x.xxx:6379
at System.Net.Sockets.Socket.Connect(IPAddress[] addresses, Int32 port)
at System.Net.Sockets.Socket.Connect(String host, Int32 port)
at ServiceStack.Redis.RedisNativeClient.Connect()
我看了看網,發現有可能的原因是插座用盡(reference)
由於應用程序的多線程環境下運行我不得不請使用PooledRedisClientManager
或BasicRedisClientManager
的,但我不是確定在我的案例中選擇哪一個,以及如何實現,不管多個操作如何,都不應該有套接字用盡的問題。
什麼應該是正確的方法/解決方案?
我可以知道downvote的原因嗎? – JerryGoyal