在redis集群模式下StackExchange.Redis的用法是什么

时间:2016-05-23 09:58:21

标签: c# redis stackexchange.redis redis-cluster

这是使用stackexchange.redis v1.1.603,.net 4.6,控制台应用程序。 这是我的代码:

using System;
using System.Collections.Generic;
using StackExchange.Redis;

namespace RedisClusterTesting
{
    class Program
    {
        static void Main(string[] args)
        {
            string ip = "192.168.1.20:30001,192.168.1.20:30002,192.168.1.20:30003,resolvedns=1";
            var conf = ConfigurationOptions.Parse(ip);
            conf.CommandMap = CommandMap.Create(new HashSet<string> {
                "INFO", "CONFIG", "CLUSTER","PING", "ECHO", "CLIENT"
            }, false);
            using (ConnectionMultiplexer conn = ConnectionMultiplexer.Connect(conf))
            {
                var db = conn.GetDatabase();
                Do(db);
            }
            Console.ReadKey();
        }
        private static void Do(IDatabase db)
        {
            /*here throws MOVED Exception:MOVED 12182 192.168.1.20:30003*/
            db.StringSet("foo", "changed");
            Console.WriteLine("foo now:" + db.StringGet("foo").ToString());
        }
    }
}

始终显示消息&#34; MOVED:12586 [192.168.1.20:30003]&#34;。

我搜索所有官方文档并在互联网上找不到正确的答案。我使用redis-cli时没关系。

如何解决这个问题?我是否需要在代码中处理异常?如果,如何处理?

1 个答案:

答案 0 :(得分:1)

好像您可能遇到此问题:https://github.com/StackExchange/StackExchange.Redis/issues/248。如果你在Connect()通话和Do()通话之间休息1秒钟,我猜你会发现问题消失了。