redis 单机连接池
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class RedisPool {
private static JedisPool pool;//jedis连接池
private static int maxTotal = 20;//最大连接数
private static int maxIdle = 10;//最大空闲连接数
private static int minIdle = 5;//最小空闲连接数
private static boolean testOnBorrow = true;//在取连接时测试连接的可用性
private static boolean testOnReturn = false;//再还连接时不测试连接的可用性
static {
initPool();//初始化连接池
}
public static Jedis getJedis(){
return pool.getResource();
}
public static void close(Jedis jedis){
jedis.close();
}
private static void initPool(){
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(maxTotal);
config.setMaxIdle(maxIdle);
config.setMinIdle(minIdle);
config.setTestOnBorrow(testOnBorrow);
config.setTestOnReturn(testOnReturn);
config.setBlockWhenExhausted(true);
pool = new JedisPool(config, "ip", port, timeout, "password");
}
}
redis 集群的连接方式
import java.util.HashSet;
import java.util.Set;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;
public class RedisClusterPool {
private static JedisCluster jedisCluster;
public static JedisCluster getJedisCluster(){
try{
//加载连接池配置文件
if(jedisCluster==null){
Set<HostAndPort> jedisClusterNode = new HashSet<HostAndPort>();
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(80);//设置最大连接数
config.setMaxIdle(10); //设置最大空闲数
config.setMaxWaitMillis(3000);//设置超时时间
config.setTestOnBorrow(true);
jedisClusterNode.add(new HostAndPort("redis-svc.statefulset", Integer.parseInt("6379")));
// jedisClusterNode.add(new HostAndPort("ip", Integer.parseInt("6380")));
// jedisClusterNode.add(new HostAndPort("ip", Integer.parseInt("6381")));
// jedisClusterNode.add(new HostAndPort("ip", Integer.parseInt("6383")));
// jedisClusterNode.add(new HostAndPort("ip", Integer.parseInt("6384")));
// jedisClusterNode.add(new HostAndPort("ip", Integer.parseInt("6385")));
if (jedisCluster == null) {
// jedisCluster = new JedisCluster(jedisClusterNode,1000,100,10,"password",config);
jedisCluster = new JedisCluster(jedisClusterNode,config);
}
}
}catch(Exception e){
e.printStackTrace();
}
return jedisCluster;
}
public static void set(String key,String value){
jedisCluster = getJedisCluster();
jedisCluster.set(key, value);
}
public static String get(String key){
jedisCluster = getJedisCluster();
String value = jedisCluster.get(key);
return value;
}
}
redis-svc.statefulset 是k8s集群内部服务发现的地址