pom.xml
<!-- redis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.1.0</version> <type>jar</type> </dependency>
redis.propertis
#/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=10000 #/u5f53/u8c03/u7528borrow Object/u65b9/u6cd5/u65f6/uff0c/u662f/u5426/u8fdb/u884c/u6709/u6548/u6027/u68c0/u67e5 redis.pool.testOnBorrow=true #/u5f53/u8c03/u7528return Object/u65b9/u6cd5/u65f6/uff0c/u662f/u5426/u8fdb/u884c/u6709/u6548/u6027/u68c0/u67e5 redis.pool.testOnReturn=true redis.pool.password=3.1414926 #IP redis.ip=192.168.0.12 #Port redis.port=6379
java:
package com.ibm.common.util;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* @author 加内特
*/
public class PropUtils {
protected static final String REDIS_RESOURCES_PROPERTIES_FILE_NAME = "redis.properties";
/**
* 取得所有属性值
*
* @param propertiesFileName
* @return
* @throws IOException
*/
protected static Properties getProperties(String propertiesFileName) throws IOException {
Properties prop = new Properties();
InputStream is = PropUtils.class.getClassLoader().getResourceAsStream(propertiesFileName);
try {
prop.load(is);
} catch (IOException e) {
throw e;
}
return prop;
}
/**
* 取得redis文件
*
* @return
* @throws IOException
*/
public static Properties getRedisResourcesProperties() {
try {
return getProperties(REDIS_RESOURCES_PROPERTIES_FILE_NAME);
} catch (IOException ioe) {
ioe.printStackTrace();
}
return null;
}
/**
* 取得redis文件的属性值
*
* @return
* @throws IOException
*/
public static String getRedisValue(String key) {
Properties properties = getRedisResourcesProperties();
return properties.getProperty(key);
}
}
package com.ibm.common.cache;
import com.ibm.common.util.PropUtils;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
* Redis操作接口
*
* @author 加内特
*/
public class RedisUtils {
private static JedisPool pool = null;
private static ThreadLocal<JedisPool> poolThreadLocal = new ThreadLocal<JedisPool>();
/**
* 构建redis连接池
*
* @param ip
* @param port
* @return JedisPool
*/
public static JedisPool getPool() {
if (pool == null) {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxActive(Integer.valueOf(PropUtils.getRedisValue("redis.pool.maxActive")));
config.setMaxIdle(Integer.valueOf(PropUtils.getRedisValue("redis.pool.maxIdle")));
config.setMaxWait(Long.valueOf(PropUtils.getRedisValue("redis.pool.maxWait")));
config.setTestOnBorrow(Boolean.valueOf(PropUtils.getRedisValue("redis.pool.testOnBorrow")));
config.setTestOnReturn(Boolean.valueOf(PropUtils.getRedisValue("redis.pool.testOnReturn")));
// 测试环境
// pool = new JedisPool(config, bundle.getString("redis.ip"),
// Integer.valueOf(bundle.getString("redis.port")));
// 线上环境
pool = new JedisPool(config, PropUtils.getRedisValue("redis.ip"), Integer.valueOf(PropUtils.getRedisValue("redis.port")),
100000, PropUtils.getRedisValue("redis.pool.password"));
}
return pool;
}
public static JedisPool getConnection() {
// ②如果poolThreadLocal没有本线程对应的JedisPool创建一个新的JedisPool,将其保存到线程本地变量中。
if (poolThreadLocal.get() == null) {
pool = RedisUtils.getPool();
poolThreadLocal.set(pool);
return pool;
} else {
return poolThreadLocal.get();// ③直接返回线程本地变量
}
}
/**
* 返还到连接池
*
* @param pool
* @param redis
*/
public static void returnResource(JedisPool pool, Jedis redis) {
if (redis != null) {
pool.returnResource(redis);
}
}
/**
* 获取数据
*
* @param key
* @return
*/
public static String get(String key) {
String value = null;
JedisPool pool = null;
Jedis jedis = null;
try {
pool = getPool();
jedis = pool.getResource();
value = jedis.get(key);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 释放redis对象
pool.returnBrokenResource(jedis);
// 返还到连接池
returnResource(pool, jedis);
}
return value;
}
/**
* 获取数据
*
* @param key
* @return
*/
public static byte[] get(byte[] key) {
byte[] value = null;
JedisPool pool = null;
Jedis jedis = null;
try {
pool = getPool();
jedis = pool.getResource();
value = jedis.get(key);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 释放redis对象
pool.returnBrokenResource(jedis);
// 返还到连接池
returnResource(pool, jedis);
}
return value;
}
/**
* 删除数据
*
* @param key
* @return
*/
public static Long del(String key) {
Long value = null;
JedisPool pool = null;
Jedis jedis = null;
try {
pool = getPool();
jedis = pool.getResource();
value = jedis.del(key);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 释放redis对象
pool.returnBrokenResource(jedis);
// 返还到连接池
returnResource(pool, jedis);
}
return value;
}
/**
* 删除数据
*
* @param key
* @return
*/
public static Long del(byte[] key) {
Long value = null;
JedisPool pool = null;
Jedis jedis = null;
try {
pool = getPool();
jedis = pool.getResource();
value = jedis.del(key);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 释放redis对象
pool.returnBrokenResource(jedis);
// 返还到连接池
returnResource(pool, jedis);
}
return value;
}
/**
* 判断是否存在
*
* @param key
* @return
*/
public static Boolean exists(String key) {
Boolean value = null;
JedisPool pool = null;
Jedis jedis = null;
try {
pool = getPool();
jedis = pool.getResource();
value = jedis.exists(key);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 释放redis对象
pool.returnBrokenResource(jedis);
// 返还到连接池
returnResource(pool, jedis);
}
return value;
}
/**
* 赋值数据
*
* @param key
* @param value
* @param expireSeconds(过期时间,秒)
* @return value
*/
public static Long set(String key, String value, int expireSeconds) {
Long result = null;
JedisPool pool = null;
Jedis jedis = null;
try {
pool = getPool();
jedis = pool.getResource();
jedis.set(key, value);
result = jedis.expire(key, expireSeconds);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 释放redis对象
pool.returnBrokenResource(jedis);
// 返还到连接池
returnResource(pool, jedis);
}
return result;
}
/**
* 设置过期时间
*
* @param key
* @param expireSeconds(过期时间,秒)
* @return value
*/
public static Long expire(String key, int expireSeconds) {
Long result = null;
JedisPool pool = null;
Jedis jedis = null;
try {
pool = getPool();
jedis = pool.getResource();
result = jedis.expire(key, expireSeconds);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 释放redis对象
pool.returnBrokenResource(jedis);
// 返还到连接池
returnResource(pool, jedis);
}
return result;
}
/**
* 赋值数据
*
* @param key
* @return
*/
public static String set(String key, String value) {
String result = null;
JedisPool pool = null;
Jedis jedis = null;
try {
pool = getPool();
jedis = pool.getResource();
result = jedis.set(key, value);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 释放redis对象
pool.returnBrokenResource(jedis);
// 返还到连接池
returnResource(pool, jedis);
}
return result;
}
/**
* 赋值数据
*
* @param key
* @return
*/
public static Long sadd(String key, String value) {
Long result = null;
JedisPool pool = null;
Jedis jedis = null;
try {
pool = getPool();
jedis = pool.getResource();
result = jedis.sadd(key, value);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 释放redis对象
pool.returnBrokenResource(jedis);
// 返还到连接池
returnResource(pool, jedis);
}
return result;
}
/**
* 判断set中是否有值
*
* @param key
* @return
*/
public static Boolean sismember(String key, String member) {
Boolean result = null;
JedisPool pool = null;
Jedis jedis = null;
try {
pool = getPool();
jedis = pool.getResource();
result = jedis.sismember(key, member);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 释放redis对象
pool.returnBrokenResource(jedis);
// 返还到连接池
returnResource(pool, jedis);
}
return result;
}
}
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/8975.html