当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何使用Booksleeve实现Redis流水线请求?》经验,为你挑选了1个好方法。

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

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的管道或有任何关于如何实现它们的想法?



1> Marc Gravell..:

在BookSleeve中,一切都是流水线的.没有同步操作.不是一个人.因此,每一个操作返回某种形式的Task(可能是香草Task,可以是一个Task,Task等等),其在未来的某个时刻(即当Redis的响应)将有一个值.您可以Wait在调用代码中使用执行同步等待或ContinueWith/ await(C#5语言功能)来执行异步回调.

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

所以说:之所以没有明确的.pipelined是,一切是流水线和异步的.

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有