在项目实施中我们经常会使用到redis进行存储数据。redis相关的配置信息有写在配置文件中,这样当需要修改参数时不需要重新修改代码,这样比较灵活。redis.properties配置文件中配置了redis相关的参数。读取redis参数的类参考CachePool.java.如下所示
CachePool.java
package cn.com.jtang.util;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import redis.clients.jedis.*;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
public final class CachePool {
public final static int expireTime = 1800;
static Map<String, Jedis> jediss = null;
static JedisCluster pool;
private static Properties p;
static {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxIdle(100);
config.setMaxWaitMillis(1000l);
InputStream inputStream = CachePool.class.getClassLoader().getResourceAsStream("redis.properties");
p = new Properties();
try {
p.load(inputStream);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private CachePool() {
}
/**
* Method description getInstance
*
* @return BinaryJedisCluster
*/
public static synchronized JedisCluster getInstance() {
if (pool == null) {
String serverInfo = p.getProperty("redis.server.info");
Set<HostAndPort> set = new HashSet<HostAndPort>();
String ipPort[] = serverInfo.split(",");
int len = ipPort.length;
for (int i = 0; i < len; i++) {
String server[] = ipPort[i].split(":");
set.add(new HostAndPort(server[0], Integer.parseInt(server[1])));
}
// Jedis Cluster will attempt to discover cluster nodes
GenericObjectPoolConfig config = new GenericObjectPoolConfig();
pool = new JedisCluster(set,
Integer.parseInt(p.getProperty("redis.timeout")),
Integer.valueOf(p.getProperty("redis.maxRedirections")),
config);
}
return pool;
}
/**
* Method description getJedisMap
*
* @return Map<String,Jedis>
*/
public static synchronized Map<String, Jedis> getJedisMap() {
if (jediss == null) {
jediss = new HashMap<String, Jedis>();
String serverInfo = p.getProperty("redis.server.info");
String ipPort[] = serverInfo.split(",");
int len = ipPort.length;
for (int i = 0; i < len; i++) {
String server[] = ipPort[i].split(":");
Jedis jedis = new Jedis(server[0], Integer.parseInt(server[1]));
jediss.put(server[1], jedis);
}
}
return jediss;
}
}
redis.properties
redis.server.info=redis-7000:7000
#redis.server.info=192.168.0.137:7000,192.168.0.136:7003
#\u6700\u5927\u5206\u914D\u7684\u5BF9\u8C61\u6570
redis.pool.maxActive=1024
#\u6700\u5927\u80FD\u591F\u4FDD\u6301idel\u72B6\u6001\u7684\u5BF9\u8C61\u6570
redis.pool.maxIdle=200
#\u5F53\u6C60\u5185\u6CA1\u6709\u8FD4\u56DE\u5BF9\u8C61\u65F6\uFF0C\u6700\u5927\u7B49\u5F85\u65F6\u95F4
redis.pool.maxWait=1000
#\u5F53\u8C03\u7528borrow Object\u65B9\u6CD5\u65F6\uFF0C\u662F\u5426\u8FDB\u884C\u6709\u6548\u6027\u68C0\u67E5
redis.pool.testOnBorrow=true
#\u5F53\u5BA2\u6237\u7AEF\u95F2\u7F6E\u591A\u957F\u65F6\u95F4\u540E\u5173\u95ED\u8FDE\u63A5\uFF0C\u5982\u679C\u6307\u5B9A\u4E3A0\uFF0C\u8868\u793A\u5173\u95ED\u8BE5\u529F\u80FD
redis.timeout=1000
#\u6700\u5927\u91CD\u8FDE\u6570
redis.maxRedirections=10