当前位置: 首页 > 知识库问答 >
问题:

使用Jedis在单个管道中实现多个Redis事务(multi/exec)

鄢修德
2023-03-14

我正在使用Jedis,我想创建一个包含多个独立事务(multi/exec块)的管道。

从我到目前为止看到的情况来看,似乎只有将整个管道切换成原子事务才是可能的。

Pipeline pipeline = jedis.pipelined();
pipeline.multi(); // Does not return a Jedis Transaction
// From there, everything done on Pipeline is in a single transaction.

我希望pipeline.multi()返回一个事务

我怀疑在一个事务中使用整个流水线要比在一个流水线中使用多个较小的事务块花费更多。

谢谢!

共有1个答案

商松
2023-03-14

在进行了更多的测试和挖掘之后,我似乎可以多次调用pipeline.multi()pipeline.exec(),从而创建多个事务块。

 类似资料:
  • 问题内容: 我试图在C的shell中实现多个管道。 在执行它并输入命令(例如)之后,shell只是挂在那里,不输出任何结果。我确保关闭所有管道。但它只是挂在那里。我以为那是问题所在。我删除了,执行后没有任何结果。我做错什么了?谢谢。 添加的代码: 问题答案: 我认为这里的问题是,您的等待和结账在创建子进程的同一循环内。在第一次迭代中,子进程将执行(将破坏子程序,并用您的第一个命令将其覆盖),然后父

  • 我在使用spring-data-redis事务操作期间遇到了异常 我阅读了这篇ERR EXEC with multi-jedis的文章,它指示了带有EXEC的MULTI,我还启用了,错误保持不变。 我移除了多执行块中的操作逻辑,我发现没有任何区别,异常发生事件与零操作块。

  • 是否可以使用Hibernate Spring对以下内容进行建模。 公开会议 我使用Spring TransactionTemplate,它同时执行会话事务生存期范围。 原因是,有时我在业务流程中有几个阶段,我希望在每个阶段完成后提交。但是,我希望继续使用相同的持久对象。如果每个事务都有一个单独的会话,则会出现暂时/分离的异常,因为原始会话已关闭。 这有可能吗?

  • 问题内容: 我用来将后台作业处理到我们的Rails项目之一中。我们要使用位于不同位置的其他Redis服务器来与其他后台处理作业分开。 根据Sidekiq配置wiki,我们可以像 config / initializers / sidekiq.rb 但是,如何初始化与多个Redis服务器的连接? 问题答案: Sidekiq 2不支持多个Redis服务器,请升级到仅在今天发布的sidekiq 3,并添

  • 问题内容: 我有一个使用Redis发布/订阅在Java中使用Jedis客户端在客户端之间传输消息的应用程序。我希望能够在用户键入命令时在运行时订阅频道,但是由于订阅是一个阻塞操作,因为它在调用订阅的线程上进行侦听,所以我不确定以后如何订阅其他频道在原始线程上。 例: 这将起作用,除了调度命令的线程将用于轮询Redis,而我将无法使用该线程订阅更多的频道。 问题答案: 我观察到了同样的问题,即订阅后

  • 我可以强制Flyway在一个事务中运行所有尚未应用的迁移,而不是让每个迁移都是自己的事务吗? 在开发环境中这不是一个问题,但是在生产环境中,您可能会执行从一个更新到下一个更新的多个迁移,其中一个迁移失败将使数据库处于“半迁移”状态,其中一些迁移已提交,而一些未提交--这是一件非常糟糕的事情。 一种解决方法是简单地将所需的所有SQL塞进一个文件中,但这样做存在一些问题: