Robin Chen
Robin Chen

Reputation: 91

What's the usage of StackExchange.Redis on redis cluster mode

This is using stackexchange.redis v1.1.603, .net 4.6, console application. Here is my codes:

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());
        }
    }
}

Always show the message "MOVED: 12586[192.168.1.20:30003]".

I search all the offcial document and on the Internet, can't find the right answer. It's OK while I use redis-cli.

How to fix this?Do I need process the exception in my code?If, how?

Upvotes: 0

Views: 2552

Answers (1)

JonCole
JonCole

Reputation: 3122

Seems like you may be running into this issue: https://github.com/StackExchange/StackExchange.Redis/issues/248. If you put a 1 second sleep between your Connect() call and your Do() call, I would guess that you will see the issue go away.

Upvotes: 1

Related Questions