Redis学习笔记6-Java使用redis和管道技术

Java使用redis和管道技术

  • Java使用redis
  • 使用连接池方式
  • 管道技术

Java使用redis

java中有jedis的jar可以提供一些API
下载jedis-2.9.0.jar和commons-pool2-2.5.0.jar。
其中commons-pool2-2.5.0.jar是使用连接池方式。

使用连接池方式

下面演示一个使用连接池方式

private static JedisPool pool;

/**	 * 建立连接池 真实环境,一般把配置参数缺抽取出来。*/
private static void createJedisPool() {
// 建立连接池配置参数
JedisPoolConfig config = new JedisPoolConfig();
// 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true
config.setBlockWhenExhausted(true);
// 设置的逐出策略类名, 默认DefaultEvictionPolicy(当连接超过最大空闲时间,或连接数超过最大空闲连接数)
config.setEvictionPolicyClassName("org.apache.commons.pool2.impl.DefaultEvictionPolicy");
// 是否启用pool的jmx管理功能, 默认true
config.setJmxEnabled(true);
// 最大空闲连接数, 默认8个 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例。
config.setMaxIdle(8);
// 最大连接数, 默认8个
config.setMaxTotal(200);
// 表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;
config.setMaxWaitMillis(1000 * 100);
// 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
config.setTestOnBorrow(true);
// 创建连接池
pool = new JedisPool(config, "192.168.0.103", 6379,1000,"redis");
}
	/**在多线程环境同步初始化*/
	private static synchronized void poolInit() { if (pool == null) createJedisPool();}
	/**获取一个jedis 对象*/
	public static Jedis getJedis() {
		if (pool == null)  poolInit();
		return pool.getResource();
	}
	/** 归还一个连接*/
	public static void returnRes(Jedis jedis) { jedis.close();}

管道技术

管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。
下面以JAVA为例子编写

Jedis conn = new Jedis("192.168.0.103");
		conn.auth("redis");
		Pipeline pipe = conn.pipelined();//获取一个pipeline
		pipe.multi();//设置事务
		pipe.set("lin2", "for");//设置string
		//设置hash
		pipe.hset("linhash1", "name", "fff");
		pipe.hset("linhash1", "age", "31");
		pipe.hset("linhash1", "gender", "male");
		Response> response = pipe.exec();//事务获取结果
		pipe.sync();//一定要调用这个才能获取结果
		List list = response.get();
		for(Object o:list){ System.out.println(o); }
		pipe.close();
		conn.close();
 
  

                            
                        
                    
                    
                    

你可能感兴趣的:(redis)