gpt4 book ai didi

java - Lettuce:响应式(Reactive) API 的共享连接

转载 作者:IT王子 更新时间:2023-10-29 06:11:05 27 4
gpt4 key购买 nike

我正在将我当前的项目从 Jedis 移植到 Lettuce。

  1. 可以为响应式 API 使用共享连接吗?只要我不调用阻塞和事务性操作,例如 BLPOP 和 MULTI/EXEC?

  2. 我应该为通过响应式(Reactive) API 的事务使用连接池吗?

  3. 是否可以通过响应式 API 来管道化命令?我应该为此使用专用连接吗?

最佳答案

在多个线程之间共享一个连接是预期用途。有多种原因:

  1. 连接是线程安全的。
  2. Redis 是单线程的。对一台主机使用多个连接显然没有意义,因为由于缺乏 Redis 处理并行性,没有性能提升。
  3. 连接池打开多个连接。虽然这对于事务和阻塞命令隔离可能有意义,但池化可能会导致性能下降。从多个应用程序服务器接收连接的单个 Redis 服务器首先要忙于接受和管理连接。单线程 Redis 的性质也会影响接受和删除连接的过程。

关于流水线:lettuce 在向 Redis 发送后续命令之前不会等待命令完成,这意味着 lettuce 默认使用流水线。防止流水线化的唯一方法是在命令调用时进行外部同步。

每个命令都直接刷新到 TCP 连接。 Lettuce 可以在将命令刷新到连接之前使用批处理对命令进行分组。命令刷新是手动操作,更适合批量加载而不是被动使用。

还有两件事:

  1. wiki 应该更详细地回答您的问题:https://github.com/mp911de/lettuce/wiki
  2. Lettuce 从 RxJava 1 迁移到基于 Project Reactor 的 Reactive Streams API .这发生在 lettuce 5.0 上,它的第一个测试版已经可用。

HTH,

标记

关于java - Lettuce:响应式(Reactive) API 的共享连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42066557/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com