Lettuce基本使用(3) --连接池1

Lettuce4.2 连接池 操作Redis3.2.6

4.2连接池貌似只能连接单机Redis??????!( RedisClusterClient没有pool()方法!  如果有知道集群连接池怎么使用的请告诉我,谢谢  )顾当连接redis集群时可能出现MOVE...异常

此连接池在lettuce4.3中已经弃用了.

import java.util.concurrent.TimeUnit;
import com.lambdaworks.redis.RedisClient;
import com.lambdaworks.redis.RedisConnectionPool;
import com.lambdaworks.redis.RedisFuture;
import com.lambdaworks.redis.RedisURI;
import com.lambdaworks.redis.api.async.RedisAsyncCommands;

/**
 * lettuce4.2连接池, 4.3已经废弃了 仅能连接单台redis?! 如果是Redis集群,可能因为哈希槽报错:MOVE.....
 */
public class Lettuce_4_2_Pool {

	private static final RedisConnectionPool<RedisAsyncCommands<String, String>> pool;
	private static final String REDIS_HOST = "192.168.37.128";
	private static final int REDIS_PORT = 7000;
	private static final int REDIS_EXPIRE = 1;
	private static final int REDIS_MAX_IDLE = 10;
	private static final int REDIS_MAX_ACTIVE = 10;

	static {
		RedisURI redisURI = new RedisURI();
		redisURI.setHost(REDIS_HOST);
		redisURI.setPort(REDIS_PORT);
		// redisURI.setPassword("");
		redisURI.setTimeout(REDIS_EXPIRE);
		redisURI.setUnit(TimeUnit.SECONDS);
		// 也可直接将url的字符串传入 RedisClient.create()方法中
		// eg:redis://[password@]host[:port][/databaseNumber]
		RedisClient client = RedisClient.create(redisURI); //
		// 从redis客户端中获取一个异步的redis缓冲池
		pool = client.asyncPool(REDIS_MAX_IDLE, REDIS_MAX_ACTIVE);
		// 参数说明:REDIS_MAX_IDLE 为本缓冲池中最大闲置连接数量 // REDIS_MAX_ACTIVE为本缓冲池中最大活动连接数量
	}

	// 从缓冲池中获取一个连接
	public static RedisAsyncCommands<String, String> getRedisConnection() {
		return pool.allocateConnection();
	}

	// 关闭服务器时 关闭缓冲池
	public static void shutDown() {
		pool.close();
	}
	
	public static void main(String[] args) {

		try (RedisAsyncCommands<String, String> commads = pool.allocateConnection()) {
			RedisFuture<String> future = commads.get("test2");
			String str = future.get();
			System.out.println(str);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
}

猜你喜欢

转载自laohulichuanzhang.iteye.com/blog/2354595