-
支持哪个代理?如果有,我如何使用它?
-
是否支持主题标签?还是类似的东西?
-
除了单元测试,是否有任何完整的用例?(即虽然我阅读了 GitHub 的官方文档,但我仍然不明白如何使用它。
官方 GitHub 文档
您正在链接到配置 Redis Sentinel Servers 文档,因此我假设您要配置 ServiceStack.Redis 实例以使用 Redis Sentinel 配置。
注意 Redis Sentinel 是 Redis 的高可用性解决方案(它不是代理),我建议阅读 Redis 的官方 Redis Sentinel 文档以了解其工作原理。
首先,您需要设置 Redis Sentinel 配置。一个流行的设置是拥有1 个 Redis 主服务器和2 个 Redis 副本从属服务器,此外,在运行 Redis 实例的每台服务器上都有一个单独的 redis 哨兵实例(用于监控正在运行的 redis 实例)是很常见的。为了便于开发,您可以使用ServiceStack的redis-config项目,该项目可以轻松地在同一台服务器上运行1x主进程,2x从进程和3x哨兵进程。
然后,当您运行 Redis 配置(假设是本地主机)时,您可以使用 ServiceStack 的RedisSentinel
类通过传入每个哨兵实例的 IP 和端口来连接到它,例如:
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 哨兵实例开始,因为
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())
{
}
use 语句的末尾(或调用.Dispose()
时)打开的 Redis 连接将返回到内部连接池,等待下次解析