设为首页 加入收藏

TOP

redisclient2.0.0pipeline的list的rpopbug
2015-11-21 01:59:24 】 浏览:8500
Tags:redisclient2.0.0pipeline list rpopbug

描述:

redis client 2.0.0 pipeline 的list的rpop 存在严重bug,rpop list的时候,如果list已经为空的时候,rpop出来的Response依然不为null,导致吊response.get()方法抛异常

代码:

@Test
	public void testRedisPipeline(){
	    Jedis jedis = null;
	    try{
	        jedis = new Jedis("127.0.0.1",6379);
	        Pipeline pipelined = jedis.pipelined();
	        for(int i=200;i<10000;i++){
	            pipelined.lpush("aa", "val"+i);
	        }
	        pipelined.sync();
	        
	    }catch(Exception e){
	        e.printStackTrace();
	    }finally{
	        if(jedis!=null){
	            jedis.disconnect();
	        }
	    }
	}
	
	//这个方法会造成redis qps无限上升
	@Test
	public void testRedisPipelinePop(){
	    Jedis jedis = null;
	    try{
	        List> result = new ArrayList>();
	        jedis = new Jedis("127.0.0.1",6379);
	        Pipeline pipelined = jedis.pipelined();
	        for(int i=0;i<10;i++){
	            //System.out.println(i);
	            Response rpop = pipelined.rpop("aa");
	            //System.out.println(rpop);
	            result.add(rpop);
	        }
	        pipelined.sync();
	        //Response r = pipelined.bitcount("aa");
	        for (Response response : result) {
                System.out.println(response.get());//异常
            }
	        
	    }catch(Exception e){
	        e.printStackTrace();
	    }finally{
	        if(jedis!=null){
	            jedis.disconnect();
	        }
	    }
	}

解决方法:

使用redis-cli 2.1.0以上版本

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇rman冷备份异机迁移 下一篇Win8(64)安装Oracle11g+PL/SQL

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目