c# – 如何使用Booksleeve实现Redis流水线请求?

c# – 如何使用Booksleeve实现Redis流水线请求?,第1张

概述关于Redis事务和管道之间的区别以及最终如何使用Booksleeve的管道,我有点混淆了.我看到 Booksleeve支持Redis transaction feature(MULTI / EXEC),但其API /测试中没有提及流水线功能.但是,在其他实现中很明显,管道和事务之间存在区别,即在 atomicity中,如下面的redis-ruby版本所示,但在某些 places中,这些术语似乎可 关于Redis事务和管道之间的区别以及最终如何使用Booksleeve的管道,我有点混淆了.我看到 Booksleeve支持Redis transaction feature(MulTI / EXEC),但其API /测试中没有提及流水线功能.但是,在其他实现中很明显,管道和事务之间存在区别,即在 atomicity中,如下面的redis-ruby版本所示,但在某些 places中,这些术语似乎可以互换使用.

redis-ruby实现:

r.pipelined {  # these commands will be pipelined  r.get("insensitive_key")}r.multi {  # these commands will be executed atomically  r.set("sensitive_key")}

我只是使用MulTI / EXEC,但它们似乎阻止了所有其他用户,直到交易完成(在我的情况下不是必需的),所以我担心他们的表现.有没有人使用Booksleeve的管道或有任何关于如何实现它们的想法?

解决方法 在BookSleeve中,一切都是流水线的.没有同步 *** 作.不是一个人.因此,每个 *** 作都返回某种形式的Task(可能是一个vanilla任务,可能是Task< string>,Task< long>等),这在将来的某个时候(即redis响应时)将具有一个值.您可以在调用代码中使用Wait来执行同步等待,或使用ContinueWith / await(C#5语言功能)来执行异步回调.

交易没有什么不同;它们是流水线的.事务的唯一微妙变化是它们在呼叫站点被额外缓冲直到完成(因为它是一个多路复用器,我们无法开始管道与事务相关的消息,直到我们有一个完整的工作单元,因为它会对同一多路复用器上的其他呼叫者产生不利影响).

所以:没有明确的.pipelined的原因是所有内容都是流水线和异步的.

总结

以上是内存溢出为你收集整理的c# – 如何使用Booksleeve实现Redis流水线请求?全部内容,希望文章能够帮你解决c# – 如何使用Booksleeve实现Redis流水线请求?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1262322.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存