如何使用ServiceStack客户端管理器正确注册Redis主从节点?

3
当我在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);

这个设置还有一些不完整的地方,我应该如何指定主节点和两个只读从节点,并配置Sentinel?

1个回答

1

ServiceStack.Redis中的RedisSentinel支持在RedisSentinel类中可用,但由于仍在测试阶段,它尚未宣布。您可以在此前的StackOverflow回答中找到有关如何使用和配置RedisSentinel的一些信息。

配置RedisSentinel

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

配置RedisClientManager

或者,如果您正在使用Redis客户端管理器,则相反,即忽略sentinel主机并使用主机和从机配置Redis Client Managers。仅PooledRedisClientManager支持配置读写/主机和只读/从机主机,例如:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接