ConnectionMultiplexerStackExchange.Redis的核心对象,ConnectionMultiplexer 应被多个调用之间共享使用。不需要为每个操作创建一个 ConnectionMultiplexer,它是完全线程安全的。可以通过使用 ConnectionMultiplexer.ConnectConnectionMultiplexer.ConnectAsync 创建连接对象,并传入配置字符串ConfigurationOptions对象。 配置字符串可以采用一系列逗号分隔的节点的形式:
创建连接:

ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("server1:6379,password=123456");

有了ConnectionMultiplexer之后,你可能需要做以下三件事:

  • 访问 redis 数据库(使用集群时,单个逻辑数据库可能分布在多个节点上)
  • 使用 redis 的发布/订阅功能
  • 访问单独服务器以进行维护/监视

使用redis数据库

IDatabase db = redis.GetDatabase();

GetDatabase返回的对象是一个成本很低的通道对象,不需要存储。redis 支持多个数据库,可以在GetDatabase的参数中指定,默认是0。
得到IDatabase后,就可以使用 redis API。 请注意,所有方法都具有同步和异步实现。
最简单的操作是存储和检索值:

string value = "abcdefg";
db.StringSet("mykey", value);
...
string value = db.StringGet("mykey");
Console.WriteLine(value); // writes: "abcdefg"

发布订阅

redis 的另一个常见用法是作为 发布/订阅消息分发工具。
并且在连接失败的情况下,ConnectionMultiplexer 将处理重新订阅所请求的信道的所有细节。

ISubscriber sub = redis.GetSubscriber();

同样,从 GetSubscriber 返回的对象是一个不需要存储的低成本的通道对象。
发布/订阅 API 没有数据库的概念。所有订阅都是全局的:它们不限于 ISubscriber 实例的生命周期。
redis 中的发布/订阅功能使用命名的 “channels” ;channels 不需要事先在服务器上定义
如在.NET中常见的,订阅采用回调委托的形式,它接受通道名称和消息:

sub.Subscribe("messages", (channel, message) => {
    Console.WriteLine((string)message);
});

访问单个服务器

出于维护目的,有时有必要发出服务器特定的命令:

IServer server = redis.GetServer("localhost", 6379);

GetServer 方法将接受一个 EndPoint 或唯一标识服务器的名称/值对。 从 GetServer 返回的对象是成本很低的通道对象,不需要存储,并且可以选择指定异步状态。请注意,可用 endpoints 也可用:

EndPoint[] endpoints = redis.GetEndPoints();

在 IServer 实例中,可以使用 Server 命令。 例如:

DateTime lastSave = server.LastSave();
ClientInfo[] clients = server.ClientList();

相关文章:

  • 2021-11-27
  • 2021-11-27
  • 2021-12-26
  • 2021-10-04
  • 2021-04-24
  • 2021-11-24
  • 2021-12-14
  • 2021-06-04
猜你喜欢
  • 2022-12-23
  • 2021-12-13
  • 2022-02-04
  • 2022-12-23
  • 2021-07-10
  • 2021-12-09
  • 2021-11-23
相关资源
相似解决方案