下一篇博文: 多种数据类型的 Jedis 存取
要使用 java 操作 redis,需要保证服务端已经安装了 redis 服务,并且本地项目已经有 java redis 驱动(jedis)
Maven 引入 Jedis 依赖
这个需要在中央仓库中自己去 copy
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
Redis 连接池
public final class RedisUtil {
//IP 地址
private static String ADDR = "127.0.0.1";
//端口号
private static int PORT = 6379;
//redis 服务端密码
private static String PWD = "123456";
//可用连接实例最大数目,默认为 8,若赋值 -1,表示不被限制
private static Integer MAX_TOTAL = 1024;
//控制一个连接池最多有多少个状态为空闲的 jedis 实例,默认值为 8
private static Integer MAX_IDLE = 200;
//等待可用连接最大的等待时间,单位 ms,默认值 -1,表示永不超时,若等待超时抛出 JedisConnectionException
private static Integer MAX_WAIT_MILLIS = 10000;
//超时
private static Integer TIMEOUT = 10000;
//在用一个 jedis 实例时,是否提前进行 validate 操作,若结果为 true 则 jedis 实例可用
private static Boolean TEST_ON_BORROW = true;
//jedis 连接池
private static JedisPool jedisPool = null;
/**
* 初始化 jedis 连接池的静态块,RedisPool 第一次类加载时执行,以后便不再执行
*/
static {
try {
JedisPoolConfig conf = new JedisPoolConfig();
/*
* 高版本 jedis jar 中 JedisPoolConfig 没有 setMaxActive 和 setMaxWait 属性,因为官方在高版本 * 中启用了此方法,用以下两个属性替换
* maxActive ==> maxTotal
* maxWait ==> maxWaitMillis
*/
//设置连接实例最大数目
conf.setMaxTotal(MAX_TOTAL);
//设置最多多少空闲的 jedis 实例
conf.setMaxIdle(MAX_IDLE);
//设置等待可用连接的最大时间
conf.setMaxWaitMillis(MAX_WAIT_MILLIS);
//设置是否提前进行测试借用
conf.setTestOnBorrow(TEST_ON_BORROW);
//新建 jedis 连接池
jedisPool = new JedisPool(conf, ADDR, PORT, TIMEOUT, PWD);
}
catch (Exception e) {
e.printStackTrace();
}
}
/*
* 获取 jedis 实例来操作数据,每次使用完要将连接返回给连接池 jedis.close()
* @return
*/
public synchronized static Jedis getRedis() {
try {
if(jedisPool != null) {
//获取 jedis 实例
Jedis jedis = jedisPool.getResource();
return jedis;
}
else{
System.out.println("没有找到 Jedis 连接池!");
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/*
* 用来回收 Jedis 对象资源,用户需要用到此方法释放资源,否则一直占用资源
* @param Jedis jedis
*/
public synchronized static void returnJedis(Jedis jedis) {
try {
if(jedis != null) {
//回收 jedis 对象资源
jedisPool.returnResource(jedis);
System.out.println("Jedis 被成功回收!");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}