在redis中存在异步问题

如果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来避免此问题.它将确保两个命令不会被其他命令拆分.这将是一笔交易.

点赞