我们如何知道手表在Redis中失败了

时间:2014-07-08 09:18:31

标签: redis jedis

我有一个场景,我想记录手表失败的密钥。这是一个java应用程序。以下是我的代码中的语句序列 -

Multi 
Watch
Hmget
exec

以下是代码 -

for (String key : coreKeys) {
            Transaction transaction = jedis.multi();
            jedis.watch(key);
            transaction.hmget(key, fields);
            redisData = transaction.exec();
...........
...........

事务仅在场景中使用,因为我想知道是否有任何正文更改了密钥。所以我的查询是如何判断出手表失败了?在浏览了网上的大多数例子之后,我已经看到语句的顺序应该是

Watch
Multi 
Hmget
exec  

但是我必须用Watch作为第二个声明来实现它。可能吗?

1 个答案:

答案 0 :(得分:3)

您只能知道EXEC返回时手表失败。

WATCH本身总是返回OK。

如果EXEC失败,则EXEC将返回空回复,因为某些观看的数据已更改。在您的代码中,您需要检查redisData是否为空结果,并在需要时再次尝试该事务。