首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring-data-redis:在事务中,get操作将返回null

Spring-data-redis:在事务中,get操作将返回null
EN

Stack Overflow用户
提问于 2017-12-08 12:16:18
回答 2查看 878关注 0票数 1

使用redis(4.0)和spring-data-redis处理项目时。

在一个事务中,在java程序中,get操作似乎会返回null。

例如,HashOperationget()方法在multi()exec()之间调用时将返回null

但是如果将get()放在multi()之前,它可以获得值。

那么,为什么呢?

EN

回答 2

Stack Overflow用户

发布于 2017-12-08 21:29:36

经过测试和思考,我认为这是合理的行为,因为事务在redis中作为原子操作执行,不可能在事务中间通过网络将值返回给客户端,因此null是合理的。

在执行事务之后,所有值都由exec()方法以List的形式返回。

因此,在调试时,在事务中间,该值应该为null,因为它还没有执行。

建议:

如果事务中的计算需要从redis中读取值,那么只需在multi()之前先读取这些值。

然后在multi()exec()之间只执行更新操作,而不执行读取操作。

票数 0
EN

Stack Overflow用户

发布于 2017-12-22 09:55:41

在文档中,它说“所有的只读操作,比如键,都通过管道传递到一个新的(非线程绑定的) RedisConnection”。有一次,我认为它会返回旧值,因为读取发生在不同的新连接中。最近似乎行为发生了变化,因为现在我看到一个事务中所有读取的空值。spring-data-redis团队的人能清楚地说明预期的行为吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47707628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档