redis client 2.0.0 pipeline 的list的rpop bug
生活随笔
收集整理的這篇文章主要介紹了
redis client 2.0.0 pipeline 的list的rpop bug
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
描寫敘述:
redis client 2.0.0 pipeline 的list的rpop 存在嚴重bug,rpop list的時候,假設list已經為空的時候,rpop出來的Response依舊不為null,導致吊response.get()方法拋異常
代碼:
@Testpublic 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();}}}<span style="white-space:pre"> </span>//這種方法會造成redis qps無限上升@Testpublic void testRedisPipelinePop(){Jedis jedis = null;try{List<Response<String>> result = new ArrayList<Response<String>>();jedis = new Jedis("127.0.0.1",6379);Pipeline pipelined = jedis.pipelined();for(int i=0;i<10;i++){//System.out.println(i);Response<String> rpop = pipelined.rpop("aa");//System.out.println(rpop);result.add(rpop);}pipelined.sync();//Response<Long> r = pipelined.bitcount("aa");for (Response<String> response : result) {System.out.println(response.get());//異常}}catch(Exception e){e.printStackTrace();}finally{if(jedis!=null){jedis.disconnect();}}}解決方法:
使用redis-cli 2.1.0以上版本號
總結
以上是生活随笔為你收集整理的redis client 2.0.0 pipeline 的list的rpop bug的全部內容,希望文章能夠幫你解決所遇到的問題。