在执行事务之前使用jedis事务响应的结果

mrphzbgm  于 2021-06-10  发布在  Redis
关注(0)|答案(1)|浏览(248)

假设我有一笔交易。我想从数据库中获取一些先前插入此事务的内容,并在同一事务的后续操作中使用该值,如下所示:

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

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

axr492tv

axr492tv1#

不,你不能用redis交易。redis的事务基本上是一次将所有命令发送到redis,redis执行这些命令,而来自其他连接的命令等待它完成。完成后,它会为您返回结果。注意,与mysql不同,它不会在事务的中间向您返回结果。所以你不能在中间读取查询结果。
要想做你想做的事情,你需要lua脚本(学习编写你想要的东西大约需要十分钟),它在服务器端运行(不需要在操作过程中将结果返回给客户机)。
你可能想看看这些
redis交易
redis lua脚本

相关问题