使用 StackExchange.Redis 连接到 redis 失败后事务无法正常工作
Transaction not working after unsuccessful connection to redis using StackExchange.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、2.8.17、2.8.19)时,一切正常。如果我在循环的几个循环后启动 redis,它要么不跳入 if 语句,要么跳入并在 WaitAll() 上被阻塞。如果我尝试检查 redis 中的值,它们会被存储。
这种情况发生在我们启动server忘记启动redis的时候。推迟启动 redis 后,它会卡住。使用批处理而不是事务时出现同样的问题。
我连接到多路复用器是错误的还是错误? (我发现很少有看起来相似但我不确定)
这是旧版本 StackExchange.Redis 中的错误 - 1.0.481、1.0.488(未测试任何旧版本)。使用新版本 1.1.553 它工作正常 (https://github.com/StackExchange/StackExchange.Redis/issues/200)。
我不确定,这是一个错误还是我做错了什么。这是代码:
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、2.8.17、2.8.19)时,一切正常。如果我在循环的几个循环后启动 redis,它要么不跳入 if 语句,要么跳入并在 WaitAll() 上被阻塞。如果我尝试检查 redis 中的值,它们会被存储。
这种情况发生在我们启动server忘记启动redis的时候。推迟启动 redis 后,它会卡住。使用批处理而不是事务时出现同样的问题。
我连接到多路复用器是错误的还是错误? (我发现很少有看起来相似但我不确定)
这是旧版本 StackExchange.Redis 中的错误 - 1.0.481、1.0.488(未测试任何旧版本)。使用新版本 1.1.553 它工作正常 (https://github.com/StackExchange/StackExchange.Redis/issues/200)。