【问题标题】:Jedis Pipeline Multi throws ClassCastExceptionJedis Pipeline Multi 抛出 ClassCastException
【发布时间】:2013-04-13 17:58:28
【问题描述】:
public class JedisPipeline {
    private static JedisPool pool = new JedisPool(new JedisPoolConfig(), "127.0.0.1", 6379);
    public static void main(String args[]){

        Jedis jedis = pool.getResource();
        Pipeline pipeline = jedis.pipelined();
        pipeline.multi();
        //pipeline.hmset("Id", new HashMap<String,String>() );
        for(int i=0; i < 1000 ; i++){
            pipeline.hincrBy("Id", i+"", i);
        }
        pipeline.exec();
        pool.returnResource(jedis);
        //pool.destroy();

        //pool = new JedisPool(new JedisPoolConfig(), "127.0.0.1", 6379);
        jedis = pool.getResource();
        Map<String,String> map1 = jedis.hgetAll("Id");
        System.out.println("map1------->"+map1);
        pool.returnResource(jedis);
        //pool.destroy();


    }
}

上面的代码有问题。它抛出一个 ClassCastException,就好像我破坏了池并创建了一个新的池对象,它可以正常工作。我是否正确使用了 Pipeline API?谁能帮我 ?我正在使用 Jedis 2.1.0

Exception in thread "main" java.lang.ClassCastException: [B cannot be cast to java.util.List
    at redis.clients.jedis.Connection.getBinaryMultiBulkReply(Connection.java:189)
    at redis.clients.jedis.Jedis.hgetAll(Jedis.java:861)
    at com.work.jedisex.JedisFactory.main(JedisFactory.java:59)

修改代码以获取抛出异常的 Map

Response<Map<String,String>> map1 = pipeline.hgetAll("Id");
pipeline.exec();
pipeline.sync();
pool.returnResource(jedis);
Map<String,String> map2 = map1.get();

【问题讨论】:

    标签: exception pipeline jedis


    【解决方案1】:

    看起来管道在 exec() 调用后没有关闭。因此,当您尝试在 returnResource 之后重用同一个 Jedis 对象时,它仍然包含来自先前操作的 pipelinedResponses。

    尝试这样做:

        pipeline.exec();
        pipeline.sync();
        pool.returnResource(jedis);
    

    sync() 调用应该关闭管道。

    【讨论】:

    • 谢谢你,这很有效!但是我已经修改了代码以获取上面的地图。我仍然得到同样的例外。你能在那个代码中找到问题吗?
    猜你喜欢
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 2017-10-10
    • 2014-03-30
    • 1970-01-01
    相关资源
    最近更新 更多