我正在使用StackExchange.Redis库,并连接到AWS ElastiCache for Redis(无服务器).

示例代码:

ITransaction transaction = db.CreateTransaction();
transaction.AddCondition(Condition.StringEqual("key:{id1:id2:id3}:stats:sum", "100"));
transaction.ListLeftPushAsync("key:{id1:id2:id3}:stats:samples", "20");
transaction.StringSetAsync("key:{id1:id2:id3}:stats:sum", "120");
transaction.StringSetAsync("key:{id1:id2:id3}:stats:updated_at", "1707808358");
await transaction.ExecuteAsync();

我得到以下错误:

StackExchange.Redis.RedisServerException: ERR unknown command 'unwatch', with args beginning with:

我似乎不能在本地重现这个问题,所以它可能与集群模式或无服务器ElastiCache的其他方面有关?

推荐答案

显然(对我来说是新闻),无服务器ElastiCache不支持watchunwatch-source.这意味着您不能使用约束(但事务本身应该在没有约束的情况下工作).如果可用,无论如何,Lua(ScriptEvaluate)可能是更好的 Select (即使约束可用)-因为这通常更容易正确,并且不会中断多路复用器(判断约束需要等待结果,这意味着支付延迟而不是纯粹的流水线,而且由于这是在事务内部,所有其他操作必须在那个时间内被挂起).

Csharp相关问答推荐

System.Data.SQLite:判断SQLite数据库是否为空(任何表中至少有一行)

Elasticsearch:当我try 使用c#将嵌套对象添加到filter中时出现问题

当我使用NET6作为目标框架时,为什么DotNet使用NET8作为MS包?

如何使用C#获取FireStore中的列表输出文档

在EF Core中,有没有什么方法可以防止在查询中写入相同的条件,而代之以表达式?

调用Task.Run()与DoSomethingAsync()有什么不同?

如何使用XmlSerializer序列化带有CDATA节的XML文件?

JsonSchema.Net删除假阳性判断结果

为什么方法的值在SELECT方法中不会更改?

异步任务调用程序集

在集成测试中可以在模拟InMemory数据库中设定数据种子

我的命名管道在第一次连接后工作正常,但后来我得到了System.ObjectDisposedException:无法访问关闭的管道

将C#类导入到PowerShell

序列化过程中的死循环

使用可空引用类型时C#接口实现错误

在Unity C#中按键点击错误的参数

使用C#代码和SQL SERVER中的相同证书签名会产生不同的结果

将两个JSON文件与覆盖值的主文件合并

C#LINQ多行条件

C#:我需要根据换行符拆分字符串,而不是在字符串中用双引号分隔换行符