2015-09-23 4 views
0

Я встречаюсь с очень странной проблемой о 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, и все в порядке. Это действительно странно.

ответ

0
  1. Эта странная вещь не может произойти. У тебя должно быть что-то очень плохое. Например, redis-cli может принимать команду как «llen (workMQ)»? Или вы на самом деле имеете в виду «llen workMQ»?

    Я думаю, что вы используете jedis для работы с другим ключом списка, чем на redis-cli!

  2. Проблема с lua проста, вы shoud возвращаете значение (по вашей воле) в конце сценария lua. И если он все еще не работает, напишите подробную информацию об ошибке для меня!

+0

Спасибо за ваш ответ. 1. Это происходит. '' 'llen (workMQ)' '' ошибка заклинания, на самом деле я использую '' 'llen workMQ''' в redis-cli. 2. Когда я запускаю этот сценарий Lua с помощью redis.call, никаких ошибок не выводится. – Armstrongya

+0

Решено, спасибо за ваше время. – Armstrongya