首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从ServiceStack.Redis管道读取值

从ServiceStack.Redis管道读取值
EN

Stack Overflow用户
提问于 2016-04-27 06:50:23
回答 1查看 1.4K关注 0票数 1

如何从ServiceStack.Redis管道读取值?我在GitHub上看到了一些例子,但如果同时有许多QueueCommands (例如,10000 ),我不确定代码是否能正确工作。

QueueCommand的回调似乎是一个异步操作。每个QueueCommand都可以有一个回调。当调用Pipeline.Flush()时,所有的QueueCommands都将以管道模式发送到Redis,当执行其中一个QueueCommands时,将调用它的回调。

我的问题是:当Pipeline.Flush()完成时,库是否保证执行所有回调?

下面是ServiceStack.Redis on GitHub的代码

代码语言:javascript
复制
    [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 }));
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-27 07:00:08

您可以在以下文件中找到Redis管道API的一些测试:

是的,当您在Redis管道上调用.Flush()时,将所有缓冲命令刷新为redis。会执行所有排队的回调。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36882391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档