【问题标题】:Stack Exchange Redis transaction is never executedStack Exchange Redis 事务从不执行
【发布时间】:2021-09-14 11:10:18
【问题描述】:

尝试使用 StackExchange.Redis 库 v2.2.4 执行如下事务:

...
var transaction = Database0.CreateTransaction();
transaction.AddCondition(Condition.KeyExists(key));
await transaction.StringSetAsync(key, value);
bool isCommited = await transaction.ExecuteAsync();
if (isCommited)
{
    Logger.Info($"{GUID} Transaction Key {key} SET in Redis");
}
else
{
    Logger.Warn($"{GUID} Transaction Key: {key} was NOT SET in Redis.");
}
...

但是事务永远不会执行,这意味着调试器永远不会命中语句bool isCommited = await transaction.ExecuteAsync()

我也尝试过同步Execute() 仍然没有成功。有什么问题?

【问题讨论】:

    标签: c# stackexchange.redis


    【解决方案1】:

    您正在通过等待异步命令阻止事务执行。事务执行后重构等待。

    var transaction = Database0.CreateTransaction();
    var stringSetTask = transaction.StringSetAsync(key, value);
    transaction.AddCondition(Condition.KeyExists(key));
    bool isCommited = await transaction.ExecuteAsync();
    if (isCommited)
    {
        await stringSetTask;
        Logger.Info($"{GUID} Transaction Key {key} SET in Redis");
    }
    else
    {
        Logger.Warn($"{GUID} Transaction Key: {key} was NOT SET in Redis.");
    }
    

    【讨论】:

      猜你喜欢
      • 2020-07-03
      • 1970-01-01
      • 1970-01-01
      • 2014-12-16
      • 1970-01-01
      • 1970-01-01
      • 2020-04-05
      • 1970-01-01
      • 2021-01-20
      相关资源
      最近更新 更多