当前位置: 首页 > 面试题库 >

流水线与Redis中的交易

湛光明
2023-03-14
问题内容

当我们在Redis中使用事务时,它基本上流水线化了事务中的所有命令。当EXEC被触发时,所有命令将一起执行,从而始终保持多个命令的原子性。

这与流水线不一样吗?

流水线和事务有何不同?另外,为什么Redis的单线程性质不足以满足要求?为什么我们明确需要流水线/事务?


问题答案:

流水线主要是网络优化。从本质上讲,这意味着客户端可以缓冲一堆命令并将它们一次性发送到服务器。不能保证在事务中执行命令。这样做的好处是为每个命令节省了网络往返时间。

Redis是单线程的,因此 单个 命令始终是原子的,但是来自不同客户端的两个给定命令可以依次执行,例如在它们之间交替执行。

但是,Multi / exec确保在multi / exec序列中的命令之间没有其他客户端正在执行命令。



 类似资料:
  • 问题内容: 我正在使用rub redis宝石。想知道我是否例如: 这样的执行顺序得到保证吗? 问题答案: 当然可以保证顺序,否则流水线将毫无用处。您可以随时查看代码。例如,此测试明确假定命令是按顺序执行的:https : //github.com/redis/redis- rb/blob/master/test/pipelining_commands_test.rb#L32

  • 问题内容: 我试图在尽可能短的时间内插入大量(-ish)元素,并且尝试了以下两种选择: 1)流水线: 2)批处理: 我没有注意到任何明显的时差(实际上,我希望批处理方法会更快):对于大约250K的插入,流水处理大约需要7秒,而批处理大约需要8秒。 阅读有关流水线的文档, “使用流水线使我们能够立即将两个请求都发送到网络上,从而消除了大部分延迟。此外,它还有助于减少数据包碎片:单独发送20个请求(等

  • 描述 贷款发放后,平台方按照合同号和贷款账号查询贷款的交易流水(包括发放、还款等金融交易),默认查询最近90天的交易,最多返回10条。 API代码 loan_app:trxn:query 请求参数 名称 类型 是否必须 描述 示例值 contractNo String 是 合同编号 acctNo String 是 账号 82700156225596267 dtStart Date 否 起始日期 2

  • 主要内容:实例,实例,实例,实例,实例,实例关键词:流水线,乘法器 硬件描述语言的一个突出优点就是指令执行的并行性。多条语句能够在相同时钟周期内并行处理多个信号数据。 但是当数据串行输入时,指令执行的并行性并不能体现出其优势。而且很多时候有些计算并不能在一个或两个时钟周期内执行完毕,如果每次输入的串行数据都需要等待上一次计算执行完毕后才能开启下一次的计算,那效率是相当低的。流水线就是解决多周期下串行数据计算效率低的问题。 流水线 流水线的基

  • 问题内容: 我必须用Java实现HTTP客户端,并且出于我的需要,似乎最有效的方法是实现HTTP管道(按照RFC2616)。 顺便说一句,我想管道POST。(我也不在谈论多路复用。我在谈论流水线,即在接收到任何HTTP请求的响应之前,通过一个连接发送许多请求) 我找不到明确声明其支持流水线的第三方库。但是我可以使用例如Apache HTTPCore 来构建这样的客户端,或者如果需要的话,可以自己构

  • 我使用spring boot webflux以非阻塞方式连接和查询Redis。我已经用LettuceConnectionFactory配置了reactivedistemplate。spring文档指出,将管道与reactivedistemplate一起使用的唯一方法是使用execute( 所以我的问题是,在使用Spring ReactiveRedisTemplate时,是否可以对命令进行管道连接?