0

これは、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());
        }
    }
}

「MOVED: 12586[192.168.1.20:30003]」というメッセージを常に表示します。

公式文書やインターネットを調べても、正しい答えが見つかりません。redis-cli を使用している間は問題ありません。

これを修正するには?コードで例外を処理する必要がありますか?その場合、どのように?

4

1 に答える 1

1

この問題が発生しているようです: https://github.com/StackExchange/StackExchange.Redis/issues/248。Connect() 呼び出しと Do() 呼び出しの間に 1 秒のスリープを入れると、問題が解消されると思います。

于 2016-06-13T23:28:11.830 に答える