RedisCacheManager
import java.util.concurrent.ConcurrentHashMap;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
@Service("redisCacheManager")
// @Slf4j
public class RedisCacheManager {
@Value("${redisdbtype}")
private String redisdbtype;
@Value("${redisdbnumber}")
private String redisdbnumber;
@Value("${host}")
private String host;
@Value("${port}")
private int port;
@Value("${timeout}")
private int timeout;
@Value("${passwords}")
private String passwords;
@Value("${maxtotal}")
private String maxtotal;
@Value("${maxidle}")
private String maxidle;
@Value("${minidle}")
private String minidle;
@Value("${maxwaitmillis}")
private String maxwaitmillis;
@Value("${testonborrow}")
private String testonborrow;
@Value("${testwhileidle}")
private String testwhileidle;
private static JedisPoolConfig poolConfig = null;
// 保存不同的数据库连接
private ConcurrentHashMap
redisPoolMap = new ConcurrentHashMap ();
public ConcurrentHashMap
getRedisPoolMap() { if (redisPoolMap.size() < 1) {
initConfig();
initPoolMap();
}
return redisPoolMap;
}
/**
* @Description:共享的poolconfig
* @return:void
*/
private void initConfig() {
poolConfig = new JedisPoolConfig();
poolConfig.setTestOnBorrow(testwhileidle.equals("true") ? true : false);
poolConfig.setTestWhileIdle(testonborrow.equals("true") ? true : false);
poolConfig.setMaxIdle(Integer.parseInt(maxidle));
poolConfig.setMaxTotal(Integer.parseInt(maxtotal));
poolConfig.setMinIdle(Integer.parseInt(minidle));
poolConfig.setMaxWaitMillis(Integer.parseInt(maxwaitmillis));
}
private void initPoolMap() {
try {
if (null != redisdbtype && null != redisdbnumber) {
String[] dbs = redisdbtype.split(",");
String[] numbers = redisdbnumber.split(",");
for (int i = 0; i < dbs.length; i++) {
// 得到redis连接池对象
JedisPool jedisPool = new JedisPool(poolConfig, host, port, timeout, passwords);
// 存放不同redis数据库
redisPoolMap.put(dbs[i], new RedisCachePool(Integer.parseInt(numbers[i]), jedisPool));
}
}
} catch (Exception e) {
// log.error("redisCacheManager初始化失败!" + e.getLocalizedMessage());
}
}
/**
* @Description: 得到jedis连接
* @param dbtypeName
* @return:Jedis
*/
public Jedis getResource(RedisDataBaseType dbtypeName) {
Jedis jedisResource = null;
RedisCachePool pool = redisPoolMap.get(dbtypeName.toString());
if (pool != null) {
jedisResource = pool.getResource();
}
return jedisResource;
}
/**
* @Description: 返回连接池
* @param dbtypeName
* @param jedis
* @return:void
*/
public void returnResource(RedisDataBaseType dbtypeName, Jedis jedis) {
RedisCachePool pool = redisPoolMap.get(dbtypeName.toString());
if (pool != null)
pool.returnResource(jedis);
}
}
JedisUtils
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.exceptions.JedisException;
import java.util.List;
import java.util.Map;
/**
* @author Loger
* Date: 2018-07-30
* TIme: 23:54
* Description :
*/
public class JedisUtils {
private static JedisPoolConfig config;
private static JedisPool jedisPool;
private static String password = "xxxxxxxxxx";
static {
config = new JedisPoolConfig();
config.setMaxIdle(100);
config.setMaxIdle(10);
jedisPool = new JedisPool(config, "192.168.113.128", 6379);
}
/**
* 获取jedis
*
* @return
*/
public static Jedis getJedis() {
Jedis jedis = jedisPool.getResource();
jedis.auth(password);
return jedis;
}
/**
* jedis放回连接池
*
* @param jedis
*/
public static void close(Jedis jedis) {
//从源码可以分析得到,如果是使用连接池的形式,这个并非真正的close,而是把连接放回连接池中
if (jedis != null) {
jedis.close();
}
}
/**
* get
*
* @param key
* @return
*/
public static String get(String key) {
Jedis jedis = null;
try {
jedis = getJedis();
return jedis.get(key);
} catch (Exception e) {
e.printStackTrace();
throw new JedisException(e.getMessage(),e);
} finally {
close(jedis);
}
}
/**
* set
*
* @param key
* @param value
* @return
*/
public static void set(String key, String value) {
Jedis jedis = null;
try {
jedis = getJedis();
jedis.set(key, value);
} catch (Exception e) {
e.printStackTrace();
throw new JedisException(e.getMessage(),e);
} finally {
close(jedis);
}
}
/**
* set with expire milliseconds
*
* @param key
* @param value
* @param seconds
* @return
*/
public static void set(String key, String value, long seconds) {
Jedis jedis = null;
try {
jedis = getJedis();
//* @param nxxx NX|XX, NX -- Only set the key if it does not already exist. XX -- Only set the key
// * * if it already exist.
// * * @param expx EX|PX, expire time units: EX = seconds; PX = milliseconds
jedis.set(key, value, "NX", "EX", seconds);
} catch (Exception e) {
e.printStackTrace();
throw new JedisException(e.getMessage(),e);
} finally {
close(jedis);
}
}
public static Long incr(String key){
Jedis jedis = null;
try {
jedis = getJedis();
return jedis.incr(key);
}catch (Exception e){
e.printStackTrace();
throw new JedisException(e.getMessage(),e);
}finally {
close(jedis);
}
}
public static void hset(String key,String field,String value){
Jedis jedis = null;
try {
jedis = getJedis();
jedis.hset(key,field,value);
}catch (Exception e){
e.printStackTrace();
throw new JedisException(e.getMessage(),e);
}finally {
close(jedis);
}
}
public static String hget(String key,String field){
Jedis jedis = null;
try {
jedis = getJedis();
return jedis.hget(key,field);
}catch (Exception e){
e.printStackTrace();
}finally {
close(jedis);
}
return null;
}
public static Map
hgetAll(String key){ Jedis jedis = null;
try {
jedis = getJedis();
return jedis.hgetAll(key);
}catch (Exception e){
e.printStackTrace();
throw new JedisException(e.getMessage(),e);
}finally {
close(jedis);
}
}
/**
*
* @param timeout 0表示永久 单位秒
* @param key key
* @return [key,value]
*/
public static String blpop(int timeout,String key){
Jedis jedis = null;
try {
jedis = getJedis();
List
list = jedis.blpop(timeout, key); return list.get(1);
}catch (Exception e){
e.printStackTrace();
throw new JedisException(e.getMessage(),e);
}finally {
close(jedis);
}
}
public static String blpop(String key){
Jedis jedis = null;
try {
jedis = getJedis();
List
list = jedis.blpop(0, key); return list.get(1);
}catch (Exception e){
e.printStackTrace();
throw new JedisException(e.getMessage(),e);
}finally {
close(jedis);
}
}
public static void lpush(String key,String... value){
Jedis jedis = null;
try {
jedis = getJedis();
jedis.lpush(key,value);
}catch (Exception e){
e.printStackTrace();
throw new JedisException(e.getMessage(),e);
}
}
/**
*
* @param timeout 0表示永久 单位秒
* @param key key
* @return [key,value]
*/
public static String brpop(int timeout,String key){
Jedis jedis = null;
try {
jedis = getJedis();
List
list = jedis.brpop(timeout, key); return list.get(1);
}catch (Exception e){
e.printStackTrace();
throw new JedisException(e.getMessage(),e);
}finally {
close(jedis);
}
}
public static String brpop(String key){
Jedis jedis = null;
try {
jedis = getJedis();
List
list = jedis.brpop(0, key); return list.get(1);
}catch (Exception e){
e.printStackTrace();
throw new JedisException(e.getMessage(),e);
}finally {
close(jedis);
}
}
public static void rpush(String key,String... value){
Jedis jedis = null;
try {
jedis = getJedis();
jedis.rpush(key,value);
}catch (Exception e){
e.printStackTrace();
throw new JedisException(e.getMessage(),e);
}
}
/**
* 获取key过期时间 -1表示永久 -2表示该key不存在
* @param key
* @return
*/
public static long ttl(String key) {
Jedis jedis = null;
try {
jedis = getJedis();
return jedis.ttl(key);
} catch (Exception e) {
e.printStackTrace();
throw new JedisException(e.getMessage(),e);
} finally {
close(jedis);
}
}
}
更多学习资料 请关注微信公众号