Lettuce 在底层使用单个共享本机连接。
在这种设计中使用 BLPOP 阻止命令是否安全 - 它会阻止此共享本机连接并影响其他客户端吗?我在 Lettuce 文档中没有找到具体的解释说明。
提前致谢,
使用 BLPOP/BLMOVE 和类似命令会在响应期间或超时之前阻止连接。如果您使用同步 API,调用线程也会在此 IO 上被阻塞。同时,其他线程可以继续通过以下方式发出命令其他客户端连接而不受影响。
如果阻塞的连接与其他线程共享,来自此类其他线程的命令将在 BLPOP/BLMOVE 后面排队。副作用是,共享被阻止连接的所有其他线程将经历延迟,直到 Redis 响应第一个 BLPOP/BLMOVE 命令,之后连接会自动解除阻塞,并且所有排队的命令将按 FIFO 执行。这是一种经典的前线阻塞模式,如果您在共享连接上使用阻塞命令,则会发生这种情况。
在您的特定用例中,建议不要使用共享连接来发出阻止命令。相同的规则适用于事务和禁用批量命令的刷新。这是罕见的用例之一生菜连接不应共享 https://lettuce.io/core/release/reference/#asynchronous-api.impact-of-asynchronicity-to-the-synchronous-api.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)