Получение исключения у джедаев

Иногда при доступе к Jedis я получаю следующие исключения.

Исключение 1:

    java.lang.ClassCastException: java.lang.Long cannot be cast to [B
    at redis.clients.jedis.Connection.getBinaryBulkReply(Connection.java:204)
    at redis.clients.jedis.Connection.getBulkReply(Connection.java:193)
    at redis.clients.jedis.Jedis.get(Jedis.java:89)

Исключение 2:

redis.clients.jedis.exceptions.JedisDataException: ERR Protocol error: invalid bulk length
    at redis.clients.jedis.Protocol.processError(Protocol.java:113)
    at redis.clients.jedis.Protocol.process(Protocol.java:131)
    at redis.clients.jedis.Protocol.read(Protocol.java:200)
    at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:285)
    at redis.clients.jedis.Connection.getBinaryBulkReply(Connection.java:204)
    at redis.clients.jedis.Connection.getBulkReply(Connection.java:193)
    at redis.clients.jedis.Jedis.get(Jedis.java:89)

Может ли кто-нибудь помочь мне решить эту проблему?


person Jinu Santh Rose    schedule 18.12.2015    source источник
comment
Какой код вызвал эти ошибки?   -  person Turn    schedule 18.12.2015


Ответы (3)


Я думаю, что это не ошибка джедаев. Redis имеет ограничение различной длины, и это плохо документировано. Посмотрите, например, этот вопрос. И посмотрите на ограничение длины multibulk в исходном коде Redis:

Если общий ответ превышает 512 * 1024 * 1024 байта, вы поймаете ошибку invalid bulk length (строка 1118).

person misterion    schedule 18.12.2015

Убедитесь, что файлы классов «реализует сериализуемые».

Пример:

public class Sample1 extends Sample2 implements Serializable
{
  // implementation here
}
person Praveen Kumar    schedule 10.08.2018

Вы должны вызвать метод Jedis.close () после того, как вы выполните операцию с экземпляром Jedis.

person 刘同彬    schedule 09.01.2020