支持哪个代理?如果有的话,我该如何使用?
是否支持主题标签?还是类似的东西?
除单元测试外,是否有完整的用例? (即,尽管我阅读了GitHub的官方文档,但我仍然不知道如何使用它。)
答案 0 :(得分:2)
您要链接到Configure Redis Sentinel Servers文档,所以我假设您要配置ServiceStack.Redis实例以使用Redis Sentinel配置。
注意Redis Sentinel是Redis的高可用性解决方案(它不是代理),我建议阅读Redis's official Redis Sentinel docs来了解其工作原理。
首先,您需要设置Redis Sentinel配置。一种流行的设置是在每个主机上都有 1x Redis Master 和 2x Redis副本从机,此外,通常在每个主机上都有一个单独的redis哨兵实例(用于监视正在运行的redis实例)运行Redis实例的服务器。要使其易于开发,您可以使用ServiceStack's redis-config项目,该项目使运行 1x主机, 2x奴隶和 3x哨兵变得容易>在同一服务器上的进程。
然后,当您运行Redis配置(假设是localhost)时,可以通过传入每个前哨实例的IP和端口来使用ServiceStack的RedisSentinel
类连接到它,例如:
var sentinelHosts = new[]{
"127.0.0.1:26380",
"127.0.0.1:26381",
"127.0.0.1:26382",
};
var sentinel = new RedisSentinel(sentinelHosts, masterName: "mymaster");
IRedisClientsManager redisManager = sentinel.Start();
注意:您不必包括Redis主实例或Redis从实例的IP和端口,因为它们将被自动发现甚至可以更改。您还可以从单个Redis Sentinel实例开始,因为
RedisSentinel
也将能够发现同一"mymaster"
组中的其他哨兵。
一旦您调用sentinel.Start()
,它将返回一个已配置的IRedisClientsManager
,它维护着一个开放的Redis客户端连接池,以及侦听Redis的哨兵服务器实例,以了解对Redis Sentinel配置的任何更改,例如万一Redis主服务器掉落到运行中的从属副本之一。
您应将redisManager
保持为单例,并使用它来解析所需的所有Redis客户,例如如果使用IOC,则可以将其注册为单例:
container.Register<IRedisClientsManager>(redisManager);
每当需要与Redis连接时,都可以使用GetClient()
来解决与当前主实例的Redis连接:
using (var redis = redisManager.GetClient())
{
}
using语句的结尾(或在调用.Dispose()
时),打开的Redis连接将返回到内部连接池,等待下一次解决。