【发布时间】:2016-09-01 09:43:14
【问题描述】:
我正在为 Redis 使用 StackExchange.Redis .NET 客户端(安装在 Windows 7 上)。 主机名 - 127.0.0.1,端口 - 6379
订阅者:
using (var connection = ConnectionMultiplexer.Connect(string.Format("{0}:{1},abortConnect=false,ConnectTimeout=10000", m_HostName, m_Port)))
{
var sub = connection.GetSubscriber();
sub.Subscribe("tasks", (channel, value) =>
{
// processing
});
}
发布者:
using (var connection = ConnectionMultiplexer.Connect(string.Format("{0}:{1},abortConnect=false,ConnectTimeout=10000", m_HostName, m_Port)))
{
var subscriber = connection.GetSubscriber();
Logger.Debug(subscriber.IsConnected().ToString());
subscriber.Publish("tasks", message);
}
在日志中我可以看到订阅者已连接,并且该行没有异常:
subscriber.Publish("tasks", message);
但订阅者没有收到任何消息,并且 Redis 桌面管理器显示 DB 为空。
在redis cli中命令PUBSUB CHANNELS显示下一个结果,这意味着频道存在:
- “任务”
- “__Booksleeve_MasterChanged”
另外,我将字符串推送到数据库并成功:
var db = connection.GetDatabase();
db.StringSet("key","message");
有什么想法或建议吗?
【问题讨论】:
-
Publish 没有在数据库中设置任何东西 - 这是预期的(db 和 pub/sub 空间大多是不同的,除非您启用键空间通知)。您确定您在发布者之前就开始订阅了吗?如果发布者在订阅者注册之前发送数据,您将不会收到有关先前值的通知(redis 发布/订阅仅更新,没有初始图像)。
标签: c# .net redis stackexchange.redis