从Redis检索数据时出现意外结果

时间:2015-09-11 08:34:55

标签: java redis jedis

我们正在使用Redis存储我们的数据(从多个服务器获取)。该数据存储在一个密钥上,该密钥是根据搜索到的参数并根据我们为数据提供的准备密钥准备的。 现在这种方法(返回预期数据)可以正常运行90%,但有时它只返回该特定键的NO RESULT,尽管Redis中存在针对该键的数据(我通过运行keys *命令验证了它) )。 我在日志中没有发现任何错误或异常,所以我完全不知道造成这种异常行为的原因。

由于这种情况非常不稳定,我无法解决这个问题。任何想法可能导致Redis以这种方式行事的问题是什么?

PS:我异步更新给定密钥的数据,以便下次用同一密钥查询时为用户提供最新数据。

1 个答案:

答案 0 :(得分:0)

使用您问题中的可用数据,它可能是以下之一:

  1. 如果您正在使用redis服务器的主从设置(在主设备上写入,从设备上的所有读取),主设备和从设备之间的网络/通信问题可能是一致性的真正问题。无法从主服务器获取更新的从服务器将返回不稳定的结果(主服务器Redis节点立即回复肯定答复,即使更改尚未复制到其从服务器)。如果是这种情况,我建议尝试WAIT命令。有关详细信息,请参阅Redis官方文档。

  2. 一个更常见的错误(即使是我公司的设置)也没有检查是否有" rouge"客户端连接和变更数据。如果这些客户端比我们的眼睛更快地修改数据,那么仅使用KEYS就不会有太大的帮助。尝试隔离另一组计算机上的设置,并查看问题是否仍然存在。您也可以使用假人逐个替换客户端,这样您的设置就不会那么复杂,也更容易调试。

  3. 你的结局可能是逻辑错误。您可能想要编辑您的问题或在此处注释您对所述密钥执行的确切命令。这将有助于调试。您可以通过Redis或其他方法进行同步,以避免竞争条件或其他类似问题。

  4. 请详细描述您的问题,以便我们更好地为您提供帮助。实际命令,客户端和服务器设置,使用的库以及Redis版本将大有帮助。