java操作redis叢集連線池
redis3.0.6叢集使用連線池,需要jedis-2.8.0.jar和commons-pool2-2.0.jar。 JedisCluster包含了所有節點的連線池,建議JedisCluster使用單例。JedisCluster每次操作完成後,不需要管理連線池的借還,它在內部已經完成。JedisCluster不用執行close()操作,它會將所有的JedisPool執行destory操作。
import java.util.HashSet;
import java.util.Properties;
import java.util.Set;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;
public class ClusterPoolUtil {
private static JedisCluster jedisCluster;
private static String redisConfigFile = “redis.properties”;
private static String hostAndPorts = null;
public static JedisCluster getJedisCluster(){
Properties props = new Properties();
try{
//載入連線池配置檔案
props.load(RedisPoolUtil.class.getClassLoader().getResourceAsStream(redisConfigFile));
hostAndPorts = props.getProperty(“redis.ips.ports”);
if(jedisCluster==null){
int connectTimeOut = 10000;//連線超時
int soTimeOut =5000;//讀寫超時
int maxAttemts =10;//重試次數
Set jedisClusterNode = new HashSet();
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(Integer.valueOf(props.getProperty(“redis.maxActive”)));
poolConfig.setMaxIdle(Integer.valueOf(props.getProperty(“redis.maxIdle”)));
poolConfig.setMaxWaitMillis(Long.valueOf(props.getProperty(“redis.maxWaitMillis”)));
poolConfig.setTestOnBorrow(Boolean.valueOf(props.getProperty(“redis.testOnBorrow”)));
poolConfig.setTestOnReturn(Boolean.valueOf(props.getProperty(“redis.testOnReturn”)));
String[] hosts = hostAndPorts.split("\|\|");
for(String hostport:hosts){
String[] ipport = hostport.split("?;
String ip = ipport[0];
int port = Integer.parseInt(ipport[1]);
jedisClusterNode.add(new HostAndPort(ip, port));
}
if (jedisCluster == null) {
jedisCluster = new JedisCluster(jedisClusterNode,connectTimeOut,soTimeOut,maxAttemts, poolConfig);
}
}
}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;
}
public static void main(String[] args) {
set("key1", "value1");
System.out.println(get("key1"));
}
}
redis.properties
#自己定義的引數
redis.ips.ports=10.10.15.191:7000||10.10.15.191:7001||10.10.15.191:7002||10.10.15.191:7003||10.10.15.191:7004||10.10.15.191:7005||10.10.15.191:7006||10.10.15.191:7007
##連線池最大連線數,預設是8。
redis.maxActive=80
##連線池中最大空閒的連線數
redis.maxIdle=10
##連線池中最小空閒的連線數
redis.minIdle=10
#空閒連線的檢測週期(單位為毫秒),預設-1 表示不做檢測
redis.timeBetweenEvictionRunsMillis=60000
#做空閒連線檢測時,每次的取樣數,預設3
redis.numTestsPerEvictionRun=10
#當連線池用盡後,呼叫者是否要等待,此引數和maxWaitMillis對應的,只有當此引數為true時,maxWaitMills才會生效。
redis.blockWhenExhausted=false
#當連線池用盡後,呼叫者的最大等待時間(單位為毫秒),預設值為-1 表示永不超時,一直等待,一般不建議使用預設值。
redis.maxWaitMillis = 1000
##向連線池借用連線時是否做連線有效性檢測(ping),無效連線會被移除,每次借出多執行一次ping命令,預設false。
redis.testOnBorrow=true
##向連線池歸還連線時是否做連線有效性檢測(ping),無效連線會被移除,每次借出多執行一次ping命令,預設false。
redis.testOnReturn=true
#向連線池借用連線時是否做連線空閒檢測,空閒超時的連線會被移除,預設false。
redis.testWhileIdle=true
##當客戶端閒置多長時間後關閉連線,如果指定為0,表示關閉該功能,單位毫秒
redis.timeout=3000
#連線的最小空閒時間,達到此值後空閒連線將被移除
redis.minEvictableIdleTimeMills=30000
相關文章
- Jedis使用連線池操作redis叢集Redis
- java操作Redis3.0.6叢集JavaRedisS3
- Jedis操作單節點redis,叢集及redisTemplate操作redis叢集(一)Redis
- 【Redis】用python操作redis叢集RedisPython
- GaussDB(DWS)叢集通訊:詳解pooler連線池
- Redis Cluster高可用叢集線上遷移操作記錄Redis
- 【Azure Redis 快取 Azure Cache For Redis】Redis連線池Redis快取
- Redis系列:搭建Redis叢集(叢集模式)Redis模式
- redis與叢集實用操作筆記Redis筆記
- redis cluster 叢集故障恢復操作思路Redis
- 實現一個redis連線池Redis
- mysql、redis 客戶端連線池MySqlRedis客戶端
- ServiceStack.Redis的原始碼分析(連線與連線池)Redis原始碼
- redis叢集Redis
- redis 叢集Redis
- Redis操作及叢集搭建以及高可用配置Redis
- Java篇-DBUtils與連線池Java
- java操作Oracle 方式一 ( 連線-》操作-》斷開連線 )JavaOracle
- 【JDBC】java連線池模擬測試 連線oracleJDBCJavaOracle
- Redis cluster 叢集Redis
- redis系列:叢集Redis
- Redis Cluster(叢集)Redis
- redis叢集原理Redis
- 搭建 Redis 叢集Redis
- redis叢集搭建Redis
- redis偽叢集配置Cluster叢集模式Redis模式
- 【Java】Spring和Tomcat自帶的連線池實現資料庫操作JavaSpringTomcat資料庫
- 連線池
- 認識Redis叢集——Redis ClusterRedis
- Redis(5.0) 叢集搭建Redis
- 搭建Redis原生叢集Redis
- redis叢集指導Redis
- Redis--叢集搭建Redis
- docker-redis叢集DockerRedis
- redis叢集報錯Redis
- 搭建redis cluster叢集Redis
- redis叢集的搭建Redis
- redis 4.0.11 叢集搭建Redis