【问题标题】:Using result from jedis transaction response before executing transaction在执行事务之前使用 jedis 事务响应的结果
【发布时间】:2020-11-03 15:56:08
【问题描述】:

假设我有一个交易 t。我想从数据库中获取之前在此事务中插入的内容,并在同一事务中的后续操作中使用该值:

byte[] data = t.get(key).get();
t.set(other_key, data);

但是在 Jedis 中,当我尝试此操作时,我收到 JedisDataException,告诉我需要在对事务响应调用 get() 之前执行事务。有没有一种方法可以在同一个事务中使用查询的结果而不执行它。

【问题讨论】:

    标签: redis nosql jedis


    【解决方案1】:

    不,您不能使用 Redis 事务。 Redis 的事务基本上是你一次性将所有命令发送到 Redis,Redis 执行这些命令,而来自其他连接的命令等待它完成。完成后,它会为您返回结果。请注意,与 MySQL 不同,它不会在事务处理过程中将结果返回给您。所以你不能在中间读取查询的结果。

    要做你想做的事,你需要Lua Script(学习写你要求的东西大约需要十分钟),它在服务器端运行(不需要将结果返回给客户端正在操作中)。

    您可能想阅读这些

    Redis Transaction

    Redis Lua Script

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-21
      • 1970-01-01
      • 2017-02-14
      • 2014-08-14
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      相关资源
      最近更新 更多