gpt4 book ai didi

java - jedis llen 结果不等于 redis llen

转载 作者:可可西里 更新时间:2023-11-01 11:36:29 24 4
gpt4 key购买 nike

我遇到了一个关于 Redis 及其 Java 客户端 Jedis 的非常奇怪的问题。我在 Redis 中有两个名为 workMQbackupMQ 的列表,当我在 redis-cli 中执行 llen workMQ 时,它返回 16。但是,当我使用 Jedis 在 Java 代码中执行 jedis.llen("workMQ") 时,它返回 0。但是当新数据通过 Java 代码运行 jedis.lpush("workMQ", "data") 时,Redis llen workMQ 变为 1 .为什么 jedis.llen("workMQ") 无法识别此列表中剩余的 16 数据项?

在出现这个奇怪的问题之前,我用Lua脚本做了rpoplpush操作,如下。

eval "for i = 1, 10 do\r redis.call('rpoplpush', 'backupMQ', 'workMQ')\r end"0

其实这个Lua脚本有一些错误,正确的是

eval "for i = 1, 10 do\r redis.call('rpoplpush', KEYS[1], KEYS[2])\r end"2 backupMQ workMQ

也许 Redis 和 Lua 之间存在某种类型错误。这两个Lua脚本我都执行了,还是不行。

PS:我的Jedis客户端版本是2.7.2,是Jedis Github上最新的稳定版。

感谢您的宝贵时间。

已解决:一晚上后,Redis 服务器神奇地识别了 workMQ 的项目长度,一切正常。真是奇怪。

最佳答案

  1. 这种奇怪的事情不可能发生。你一定是搞错了什么。例如,redis-cli 可以接受像“llen(workMQ)”这样的命令吗?或者您实际上是指“llen workMQ”?

    我认为您很可能正在使用 jedis 来操作与 redis-cli 不同的列表键!

  2. lua 问题很简单,你应该在lua 脚本结束时返回一个值(随意)。如果还是不行,把详细的错误信息发给我!

关于java - jedis llen 结果不等于 redis llen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32741235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com