如果redis是单线程服务器,为什么结果不是100000?我认为这不是redis的问题,但我想知道原因.谢谢.
RedisConnection.Default.Database.StringSet("mykey1", 0);
Parallel.For(0, 50000, new ParallelOptions { MaxDegreeOfParallelism = 2 }, (i) =>
{
var number = RedisConnection.Default.Database.StringGet("mykey1");
int result = int.Parse(number);
RedisConnection.Default.Database.StringSet("mykey1", result + 1);
});
Console.WriteLine("Result" + RedisConnection.Default.Database.StringGet("mykey1"));
最佳答案 您可以使用MULTI / EXEC来避免此问题.它将确保两个命令不会被其他命令拆分.这将是一笔交易.