redis工具類
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;
}
} 本文由用戶 dw7n 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!