Я встречаюсь с очень странной проблемой о Redis и его Java-клиенте Jedis. У меня есть два списка в Redis с именем workMQ
и backupMQ
, когда я выполняю llen workMQ
в redis-cli, он возвращает 16
. Однако, когда я выполняю jedis.llen("workMQ")
в коде Java с Jedis, он возвращает 0
. Но когда новые данные, поступающие с помощью запуска jedis.lpush("workMQ", "data")
в коды Java, Redis llen workMQ
становятся 1
. Почему jedis.llen("workMQ")
не смог узнать оставшиеся 16
элементов данных в этом списке?jedis llen результат не равен redis llen
Прежде чем возникла эта странная проблема, я сделал rpoplpush
, работая со сценарием Lua следующим образом.
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. Это происходит. '' 'llen (workMQ)' '' ошибка заклинания, на самом деле я использую '' 'llen workMQ''' в redis-cli. 2. Когда я запускаю этот сценарий Lua с помощью redis.call, никаких ошибок не выводится. – Armstrongya
Решено, спасибо за ваше время. – Armstrongya