如何使用ServiceStack客户经理正确注册Redis Master和Slaves?

时间:2015-03-11 04:34:48

标签: redis servicestack servicestack.redis

当我在Google Compute Engine上配置默认的Redis群集时,每台计算机上都有一个主设备和两个只读从设备,并且Redis Sentinel正在运行。鉴于以前的集群,我现在想在我的ServiceStack服务中使用它,但Sentinel设置让我感到难过,通常我会做一些事情:

container.Register<IRedisClientsManager>(c =>
    new RedisManagerPool(container.Resolve<IAppSettings>().GetString("Redis:Master")));
var cacheClient = container.Resolve<IRedisClientsManager>().GetCacheClient();
container.Register(cacheClient);

所以这个设置有些事情是不完整的,如何指定主设备和2个只读从设备,并配置Sentinel?

1 个答案:

答案 0 :(得分:1)

RedisSentinel课程中提供ServiceStack.Redis中的RedisSentinel支持,但由于它仍在测试中,因此尚未公布。您可以找到有关如何使用和配置RedisSentinel in this previous StackOverflow Answer的一些信息。

配置RedisSentinel

使用Redis Sentinel时,它是管理各个主/从连接的redis sentinel外部进程,因此您只需配置Sentinel主机并忽略各个主/从连接。

配置RedisClientManager

或者,如果您使用Redis Client Manager,则会执行相反的操作,即忽略标记主机并使用主从主机配置Redis客户端管理器。只有PooledRedisClientManager支持配置读写/主控和只读/从属主机,例如:

container.Register<IRedisClientsManager>(c => 
    new PooledRedisClientManager(redisReadWriteHosts, redisReadOnlyHosts) { 
        ConnectTimeout = 100,
        //...
    });