【问题标题】:Getting Exception in Jedis在绝地武士中获得例外
【发布时间】:2020-01-09 14:51:19
【问题描述】:

我有时在访问 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)

谁能帮我解决这个问题?

【问题讨论】:

  • 产生这些错误的代码是什么?

标签: redis jedis


【解决方案1】:

我认为这不是 Jedis 错误。 Redis 有各种批量长度的限制,并且没有很好的记录。以this question 为例。并查看多批量长度限制in Redis source code

如果您的总响应超过 512*1024*1024 字节,您将捕获 invalid bulk length 错误(第 1118 行)。

【讨论】:

    【解决方案2】:

    确保类文件“实现可序列化”。

    例子:

    public class Sample1 extends Sample2 implements Serializable
    {
      // implementation here
    }
    

    【讨论】:

      【解决方案3】:

      对 Jedis 实例进行操作后,应调用 Jedis.close() 方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-07
        • 2017-10-07
        • 1970-01-01
        • 1970-01-01
        • 2014-02-09
        • 2014-01-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多