【发布时间】:2014-09-09 14:28:43
【问题描述】:
我正在尝试使用 C# 中的 Redis 编写生产者/消费者系统。产生的每条消息只能由一个消费者消费,我希望消费者等待消费者创建的元素。我的系统必须支持许多生产者/消费者集。
我使用StackExchange.Redis 与Redis 通信,并使用列表,其中元素使用ListLeftPush 添加并使用ListRightPop 删除。我所经历的是,虽然ListRightPop 方法应该阻塞直到列表中存在一个元素(或在定义的超时之后),但如果列表中没有元素,它总是自动返回。这是我为检查而编写的测试代码:
IDatabase cache = connection.GetDatabase();
Trace.TraceInformation("waiting "+DateTime.Now);
var res = cache.ListRightPop("test");
Trace.TraceInformation("Got "+res+", Ended" + DateTime.Now);
不到 1 秒后,我得到了 nil 结果。
【问题讨论】:
标签: c# redis stackexchange.redis