一、代码
1、工具类
package com.cn.until;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
*在高版本的jedis jar包,比如本版本2.9.0,JedisPoolConfig没有setMaxActive和setMaxWait属性了
* 这是因为高版本中官方废弃了此方法,用以下两个属性替换。
* maxActive ==> maxTotal
* maxWait==> maxWaitMillis
*/
public class RedisUtil {
//创建连接池对象
private static JedisPool pool=null;
//设定连接超时时间
private static int POOL_TIMEOUT = 10000;
//创建连接池
public static JedisPool getPool(String host,int port,String pwd){
if(pool==null ){
JedisPoolConfig config = new JedisPoolConfig();
//设置jedis的最大实例数
config.setMaxTotal(500);
//设置jedis的最大空闲实例数
config.setMaxIdle(5);
// 表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;
config.setMaxWaitMillis(1000 * 10);
// 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
config.setTestOnBorrow(true);
pool=new JedisPool(config,host,port,POOL_TIMEOUT,pwd);
}
return pool;
}
//关闭连接池
public static void closePool(){
if(pool!=null){
pool.close();
}
}
//归还jedis实例到连接池
public static void returnJedis2Pool(Jedis jedis){
if(jedis!=null){
jedis.close();
}
}
}
2、主类
package com.cn.service;
import com.cn.until.RedisUtil;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.Pipeline;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class Pipelined_java {
public static void main(String[] args) {
JedisPool pool = RedisUtil.getPool("master", 6379, "123456");
Jedis jedis = pool.getResource();
Pipeline pipelined = jedis.pipelined();
pipelined.select(1);
//管道批量插入
ArrayList<String> strings = new ArrayList<>();
strings.add("aa");
strings.add("bb");
strings.add("cc");
for (String s:strings) {
pipelined.hset("1",s,s+"11");
pipelined.hset("2",s,s+"22");
}
//管道批量提交
pipelined.sync();
//管道批量查询
for(int i=1;i<3;i++){
pipelined.hgetAll(i+"");
}
//管道批量提交并批量返回查询结果
List<Object> objects =pipelined.syncAndReturnAll();
for (Object o:objects) {
//将list元素转化为map
Map<String, String> m=(Map<String, String>)o;
Set<String> strings1 = m.keySet();
for (String key:strings1) {
System.out.println(String.format("key:%s,value:%s",key,m.get(key)));
}
}
System.out.println(objects);
}
}
二、结果
1、redis库
master:6379[1]> DBSIZE
(integer) 2
master:6379[1]> keys *
1) "1"
2) "2"
master:6379[1]> hgetall 1
1) "aa"
2) "aa11"
3) "bb"
4) "bb11"
5) "cc"
6) "cc11"
master:6379[1]> hgetall 2
1) "aa"
2) "aa22"
3) "bb"
4) "bb22"
5) "cc"
6) "cc22"
master:6379[1]>
2、程序输出结果
key:aa,value:aa11
key:bb,value:bb11
key:cc,value:cc11
key:aa,value:aa22
key:bb,value:bb22
key:cc,value:cc22
[{aa=aa11, bb=bb11, cc=cc11}, {aa=aa22, bb=bb22, cc=cc22}]