如何将消息发布到 Redis 通道 (StackExchange.Redis)

问题描述

我读过一个关于在 StackExchange.Redis 文档中订阅和发布的示例,但我不明白。

为什么这个例子没有谈到发布?

var channel = multiplexer.GetSubscriber().Subscribe("messages");
channel.OnMessage(message =>
{
    Console.WriteLine((string)message.Message);
});

如何在Dotnet Core项目中实现订阅和发布?

RedisChannel 是什么,谁能解释一下?

我喜欢这个:

RedisChannel channelWithLiteral = new RedisChannel("messages",RedisChannel.PatternMode.Literal);

RedisChannel channelWithLiteral = new RedisChannel("messages",RedisChannel.PatternMode.Literal);

var sub = connectionPoolManager.GetConnection().GetSubscriber();
sub.PublishAsync(channelWithLiteral,Serializer.Serialize(message));

Sub 和 Pub 项目。这是正确的吗?

解决方法

将 Redis 包添加到您的项目后(通过 StackExchange.Redis NuGet 包),您可以连接到您的 Redis 服务器(在本例中为本地):

using StackExchange.Redis;

ConnectionMultiplexer connection = ConnectionMultiplexer.Connect("localhost");

接下来,您应该使用 ISubscriber.Subscribe 订阅频道:

var subscriber = connection.GetSubscriber();

可以通过以下方式向任何频道发布消息:

subscriber.Publish("channle-name","This is a message");

最后,订阅同一个频道(可能来自另一个客户端)以接收通过您想要的频道发送的消息:

subscriber.Subscribe("channle-name",(channel,message) => {
    Console.WriteLine((string)message);
});