当服务器仍将写入STream时,我需要从REDIS流中读取。现在有两种方法。一种方法是获取已经存在的消息列表。我正在按照以下指示进行操作。但是我想进行阻塞读取,以便我的客户端控制台应用程序将等待流中的消息。我知道在REDIS-CLI中使用以下命令可以完成相同的操作。我想在C#中达到相同的结果 XREAD BLOCK 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}");
}