jedis使用pipline的方法,jedis使用pipline
在集中操作redis的地方,使用jedis的pipline的功能能够极大地提升效率,普通的redis操作形式都是下面这种:client ---request1---> redis
client <---response1-- redis
client ---request2---> redis
client <---response2-- redis
......
client ---requestn---> redis
client <---responsen-- redis
可见有几次请求便有几对网络通信,使用pipline之后,其工作形式为:
client ---request1、request2...requestn---> redis
client <---response1、response2、response3-- redis
无论有多少次网络请求,只有一对网络通信,因此,在有大批量的redis请求时,通过pipline的方式可以大大缩短网络通信时间;
使用jedis的pipline的方法如下所示:
下面的步骤中所使用到的m_jedisPool是jedis连接池,类型为JedisPool//1.从jedis连接池中拿到一个连接
Jedis jds = m_jedisPool.getResource();
//2.获取jedis的pipline
Pipeline pipline = jds.pipelined();
//3.使用pipline批量发送操作
//(1)向pipline中加入一个get操作,获取key1对应的value
pipline.get(key1);
//(2)向pipline中加入一个zrevrange操作,获取sortedset中key2的所有值
pipline.zrevrange(key2, 0, -1);
//(3)向pipline中加入一个hgetAll操作,获取hash表中key2的所有值
pipline.hgetAll(key2);
//4.获取pipline中批量操作的结果,向pipline中加入几个操作就会返回几个对象,如果某个结果为空,则该项对应的结果就是null
List<Object> piplineRes = pipline.syncAndReturnAll();
//5.处理pipline返回的结果
//(1)处理第1个get操作返回的结果,这个结果如果存在肯定是个String
if(piplineRes.get(0) != null && (piplineRes.get(0) instanceof String))
{
//处理pipline返回的第一个操作的结果
}
//(2)处理第2个zrevrange操作返回的结果,zrevrange操作返回的结果如果存在肯定是个Set类型
if (piplineRes.get(1) != null && (piplineRes.get(1) instanceof Set))
{
//处理pipline返回的第2个操作的结果
}
//(3)处理第3个zrevrange操作返回的结果,hgetAll操作返回的结果如果存在肯定是个Map类型
if (piplineRes.get(2) != null && (piplineRes.get(2) instanceof Map))
{
//处理pipline返回的第3个操作的结果
}
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。