jedis llen результат не равен redis llen

Я столкнулся с очень странной проблемой, связанной с 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 элементы данных в этом списке?

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


person Armstrongya    schedule 23.09.2015    source источник


Ответы (1)


  1. Этого не может случиться. Вы, должно быть, ошиблись. Например, redis-cli может принимать команду типа llen (workMQ)? Или вы вообще имеете в виду llen workMQ?

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

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

person Murphy Ng    schedule 23.09.2015
comment
Спасибо за ответ. 1. Бывает. llen(workMQ) - это орфографическая ошибка, на самом деле я использую llen workMQ в redis-cli. 2. Когда я запускаю этот Lua-скрипт с redis.call, никаких ошибок не выводится. - person Armstrongya; 24.09.2015