gpt4 book ai didi

c# - 关于ServiceStack.Redis的一些问题

转载 作者:IT王子 更新时间:2023-10-29 06:04:58 25 4
gpt4 key购买 nike

  1. 支持哪个代理?如果有,我该如何使用它?

  2. 是否支持hashtag?或者类似的东西?

  3. 除了单元测试,有没有完整的用例? (即虽然看了官方的GitHub文档,但是还是不懂怎么用。)

Official GitHub Docs

最佳答案

您正在链接到 Configure Redis Sentinel Servers文档,所以我假设您想配置 ServiceStack.Redis 实例以使用 Redis Sentinel 配置。

备注Redis Sentinel是 Redis 的高可用性解决方案(它不是代理),我建议阅读 Redis's official Redis Sentinel docs了解其工作原理。

首先,您需要设置 Redis Sentinel 配置。一个流行的设置是有 1x Redis Master2x Redis replica slaves,此外,通常在每个上都有一个单独的 redis sentinel 实例(它监视正在运行的 redis 实例)运行 redis 实例的服务器。为了便于开发,您可以使用 ServiceStack's redis-config项目,可以轻松地在同一台服务器上运行 1x master2x slaves3x sentinel 进程。

然后,当您运行 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();

Note: you don't have to include the IP and ports for Redis master or Redis slave instances as they'll be automatically discovered and can even change. You also can start with a single Redis Sentinel Instance as RedisSentinel will also be able to discover other sentinels in the same "mymaster" group.

一旦您调用 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连接会返回到内部连接池,等待下一次解析。

关于c# - 关于ServiceStack.Redis的一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51588011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com