【问题标题】:Cannot pipeline EVALSHA commands in Spring Data Redis无法在 Spring Data Redis 中流水线化 EVALSHA 命令
【发布时间】:2019-03-17 09:20:04
【问题描述】:

我正在尝试在 Spring Data Redis 中将 Redis 的 EVALSHA 命令管道化为described here

但是,当我尝试使用 EVALSHA 执行此操作时,它会抛出 UnsupportedOperationException,如发现 here in the Spring Data Redis code

鉴于 Redis 本身 supports this:

有时应用程序可能还希望在管道中发送 EVAL 或 EVALSHA 命令。这是完全可能的,Redis 明确支持它

Jedis 还有supports this Spring Data Redis 怎么会阻止它发生?这只是一个尚未实现的功能,还是因为某种原因不可行而不受支持?如果是这样,在 Spring Data Redis 中流水线脚本的替代方法是什么?

【问题讨论】:

    标签: java spring redis jedis spring-data-redis


    【解决方案1】:

    我不熟悉 Spring Boot 的细节,但您可以创建一个新脚本,将所有流水线命令作为单个脚本调用。为此,您需要将所有脚本连接到一个脚本中并组合您的数据,以便一切都可以按照您需要的方式执行。

    【讨论】:

    • 这是可能的,但是就每个操作而言,我的脚本已经处于最高事务/原子级别。我希望使用流水线来应用与 Nagle 算法在 TCP 中所做的类似的方法,但在 Redis 层,我只是将许多脚本 eval 打包在一起,并在 TCP 套接字拥塞时将它们推送到一起。
    • 好吧,如果 spring data redis 不支持流水线,你要么需要使用新库,要么尝试我建议的技巧。
    • 是的,使用替代库是一种解决方案(如果有些明显的话),这确实是我所做的 - 但是问题是为什么 Spring Data Redis 不支持 EVALSHA 命令的流水线处理库 (Jedis) 和 Redis 本身能够做到这一点。
    猜你喜欢
    • 2019-01-22
    • 1970-01-01
    • 2014-04-04
    • 1970-01-01
    • 2016-07-05
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    相关资源
    最近更新 更多