.net StackExchange.Redis与“等待”一起使用无法正常工作

时间:2019-09-15 14:16:16

标签: redis wait stackexchange.redis

使用Redis集群(服务器)进行R / W测试:1个主设备+ 2个从设备。以下是主要的WRITE代码:

var trans = redisDatabase.CreateTransaction();
Task<bool> setResult = trans.StringSetAsync(key, serializedValue, TimeSpan.FromSeconds(10));
Task<RedisResult> waitResult = trans.ExecuteAsync("wait", 3, 10000);
trans.Execute();
trans.WaitAll(setResult, waitResult);

使用以下内容作为连接字符串:

[server1 ip]:6379,[server2 ip]:6379,[server3 ip]:6379,ssl=False,abortConnect=False

运行100个线程,这些线程执行以下步骤的1000次循环:

  1. 生成GUID作为密钥,并随机生成1024个字节的值
  2. 编写密钥(使用上面的代码)
  3. 使用“ var stringValue = redisDatabase.StringGet(key,CommandFlags.PreferSlave);“
  4. 比较这两个值,如果它们不同则打印错误。

多次运行该测试会产生一些错误-试图理解为什么“等待”(10秒!)操作应保证在返回之前写入所有从站。

有什么主意吗?

1 个答案:

答案 0 :(得分:1)

SE.Redis不支持

WAIT,如其多产作者在Stackexchange.redis lacks the "WAIT" support

所解释的那样。