gpt4 book ai didi

c# - 如何从 Redis 服务器流上的 c# StackExchange.Redis nuget 包进行阻塞读取

转载 作者:行者123 更新时间:2023-12-03 06:38:28 25 4
gpt4 key购买 nike

我需要从 REDIS 流中读取,而服务器仍将写入 STream。现在有2种方法。一种方法是获取已经存在的消息列表。我正在按照下面的说明进行操作。但是我想做一个阻塞读取,以便我的客户端控制台应用程序将等待流中的消息。我知道在 REDIS-CLI 中使用以下命令可以完成同样的操作。我想在 C# 中达到相同的结果
XREAD 块 1000 条流#channel1 1526999626221-0


IDatabase db = redis.GetDatabase();
while (true)
{
iteration++;
//var messages = db.StreamRead("#channel1", "0-0");
var messages = db.StreamRead("#channel1", lastMessageInAsequence);

IEnumerator MessageEnumerator = messages.GetEnumerator();

while (MessageEnumerator.MoveNext())
{
StackExchange.Redis.NameValueEntry[] entry1 = ((StackExchange.Redis.StreamEntry)MessageEnumerator.Current).Values;

lineCount++;
Console.WriteLine(entry1[0].Name + ":" + entry1[0].Value);
lastMessageInAsequence = entry1[0].Name;
}

Console.WriteLine($"{lineCount} lines read from stream in 1 go in iteration {iteration}");
}

最佳答案

这目前是不可能的。见 https://stackexchange.github.io/StackExchange.Redis/PipelinesMultiplexers.html#multiplexing原因;我们已经讨论了启用此方案的一些选项,但需要大量工作才能启用它。我对这些想法没有预计到达时间。我理解你想要做什么,它现在与图书馆不兼容。

关于c# - 如何从 Redis 服务器流上的 c# StackExchange.Redis nuget 包进行阻塞读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58762692/

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