![](/img/trans.png)
[英]How to read values from the Redis Stream using ServiceStack.Redis Library?
[英]Read values from ServiceStack.Redis Pipeline
如何從 ServiceStack.Redis 管道中讀取值? 我在GitHub 上看到了示例,但我不確定如果同時有許多 QueueCommands(例如,10000),代碼是否能正常工作。
QueueCommand 的回調似乎是一個異步操作。 每個 QueueCommand 都可以有一個回調。 當 Pipeline.Flush() 被調用時,所有的 QueueCommands 將被發送到 Pipeline Mode 的 Redis Server,當 QueueCommands 之一被執行時,它的回調將被調用。
我的問題是:當 Pipeline.Flush() 完成時,庫是否保證執行所有回調?
這是 GitHub 上的 ServiceStack.Redis 代碼
[Test]
public void Can_call_single_operation_with_callback_3_Times_in_pipeline()
{
var results = new List<long>();
Assert.That(Redis.GetValue(Key), Is.Null);
using (var pipeline = Redis.CreatePipeline())
{
pipeline.QueueCommand(r => r.IncrementValue(Key), results.Add);
pipeline.QueueCommand(r => r.IncrementValue(Key), results.Add);
pipeline.QueueCommand(r => r.IncrementValue(Key), results.Add);
//Can I assume that when Flush() finishes,
//all 3 callbacks (results.Add) would have finished?
pipeline.Flush();
}
Assert.That(Redis.GetValue(Key), Is.EqualTo("3"));
Assert.That(results, Is.EquivalentTo(new List<long> { 1, 2, 3 }));
}
您可以在以下位置找到 Redis Pipeline API 的一些測試:
是的,當您在 Redis 管道上調用.Flush()
,它會將所有緩沖的命令刷新到 redis,然后執行所有排隊的回調。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.