package com.redis;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.Set;
import com.alibaba.fastjson.JSON;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;
import redis.clients.jedis.SortingParams;
/**
*
*备注:使用ShardedJedisPool
* 切片链接池
*提交:qinxuewu
*时间:2015年8月20日下午4:40:57
*
*/
public class RedisShardPoolUtil {
public static ShardedJedisPool jedisPool ; //切片连接池
static {
try {
List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
shards.add( new JedisShardInfo("127.0.0.1",6379));
//shards.add( new JedisShardInfo("192.168.56.102", 6379) );
JedisPoolConfig config = new JedisPoolConfig();
//设置最大连接数
config.setMaxTotal(300);
//设置最大空闲数
config.setMaxIdle(600);
//设置超时时间
config.setMaxWaitMillis(3000);
// 在应用初始化的时候生成连接池
jedisPool = new ShardedJedisPool(config, shards);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 向缓存中设置字符串内容
* 失败返回0 不覆盖 成功 返回1
* @param key key
* @param value value
* @return
* @throws Exception
*/
public static long setnax(String key,String value){
ShardedJedis client=null;
try {
//从切片池中获取实例
client = jedisPool.getResource();
return client.setnx(key, value);
} catch (Exception e) {
e.printStackTrace();
}finally{
client.close();
}
return 0;
}
/** 成功返回 OK
* 向缓存中设置对象(自动把对象转换成json数据存储到缓层中)
* @param key
* @param value
* @return
*/
public static long setnx(String key,Object value){
ShardedJedis jedis=null;
try {
String objectJson = JSON.toJSONString(value);
jedis = jedisPool.getResource();
return jedis.setnx(key, objectJson);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return 0;
}
/**
* 删除缓存中得对象,根据key
* @param key
* @return
*/
public static boolean del(String key){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
jedis.del(key);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}finally{
jedis.close();
}
}
/**
* 根据key 获取内容
* @param key
* @return
*/
public static Object get(String key){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
Object value = jedis.get(key);
return value;
} catch (Exception e) {
e.printStackTrace();
return false;
}finally{
jedis.close();
}
}
/**
* 根据key 获取对象
* @param key
* @return
*/
public static <T> T get(String key,Class<T> clazz){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
String value = jedis.get(key);
return JSON.parseObject(value, clazz);
} catch (Exception e) {
e.printStackTrace();
return null;
}finally{
jedis.close();
}
}
/***
* 检查key是否存在
* @param key
* @return
* true 存在
* false 不存在
*/
public static boolean checkExists(String key){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.exists(key);
} catch (Exception e) {
e.printStackTrace();
return false;
}finally{
jedis.close();
}
}
/***
* 往指定的key追加内容,key不在则添加key
* @param key
* @param value
* @return
*/
public static boolean appendStr(String key,String value){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
jedis.append(key, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}finally{
jedis.close();
}
}
/***************************************hashes(哈希)类型*********************************************************/
/**
* 设置hash field
* 如果存在不会设置返回0
* @param key
* @param field
* @param value
* @return 成功返回1,失败 0
*/
public static long hset(String key,String field,String value){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.hset(key, field, value);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return 0;
}
/**
* hget取值(value)
* @param key
* @param field
* @return
*/
public static Object hget(String key,String field){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.hget(key, field) ;
} catch (Exception e) {
e.printStackTrace();
return null;
}finally{
jedis.close();
}
}
/**
* hmset 批量设置值
* @param key
* @param hashmap
* @return 成功返回OK
*/
public static String hmset(String key,Map<String, String> hashmap){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.hmset(key, hashmap);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return null;
}
/**
* hmget 批量取值(value)
* @param key
* @param field
* @return
*/
public static Object hmget (String key,String...fields){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.hmget(key, fields);
} catch (Exception e) {
e.printStackTrace();
return null;
}finally{
jedis.close();
}
}
/**
* @param key
* @return 返回所有的key和value
*/
public static Map<String, String> hgetall(String key){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.hgetAll(key);
} catch (Exception e) {
e.printStackTrace();
return null;
}finally{
jedis.close();
}
}
/**
* 指定自增,负数自减
* @param key
* @param field
* @param value
* @return
*/
public static long hincrby(String key,String field,long value){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.hincrBy(key, field, value) ;
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return 0;
}
/***
* 删除一个或多个哈希表
* @param key
* @param fields
* @return
*/
public static long hdel(String key,String...fields){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.hdel(key, fields);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return 0;
}
/***************************************list(列表)*********************************************************/
/**
* lpush 设置值 从头部压入一个元素
* @param key
* @param strings
* @return 成功返回成员的数量 失败返回0
*/
public static long lpush(String key,String...strings){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.lpush(key, strings);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return 0;
}
/**
* rpush 从尾部压入一个元素
* @param key
* @param strings
* @return 成功返回成员的数量 失败返回0
*/
public static long rpush (String key,String...strings){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.rpush (key, strings);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return 0;
}
/**
* list列表取值(lrange)
* @param key
* @param start
* @param end
* @return start=0 end=-1(代表从开始到结束)
*/
public static Object lrange (String key,long start,long end){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.lrange(key, start, end);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return 0;
}
/**
* 从头部删除元素,并返回删除元素
* @param key
* @return
*/
public static String lpop (String key){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.lpop(key);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return null;
}
/**
* 根据下表获取元素
* @param key
* @param index
* @return
*/
public static String lindex(String key,int index){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.lindex(key, index);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return null;
}
/**
* 获取列表对应的长度
* @param key
* @param index
* @return
*/
public static long llen (String key){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.llen(key);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return 0;
}
/***************************************set集合*********************************************************/
/**
* 向集合成添加一个或多个成员
* @param key
* @param members
* @return
*/
public static long sadd (String key,String...members){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.sadd(key, members) ;
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return 0;
}
/**
* 获取集合的成员个数
* @param key
* @param index
* @return
*/
public static long scard(String key){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.scard(key);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return 0;
}
/**
* 返回集合中的所有成员
* @param key
* @param index
* @return
*/
public static Set<String> smembers(String key){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.smembers(key);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return null;
}
/***************************************sorted set******************************************************/
/**
* 向有序集合中添加一个或多个成员,或者更新已存在成员的分数
* @param key
* @param scoreMembers
* @return
*/
public static long zadd (String key,Map<String, Double> scoreMembers){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.zadd(key, scoreMembers);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return 0;
}
/***
* 排序
* @param key
* @param sortingParameters
* @return
*/
public static List<String> sort(String key,SortingParams sortingParameters){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.sort(key, sortingParameters);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return null;
}
/***
* 排序 从大到小
* @param key
* @param sortingParameters
* @return
*/
public static List<String> sort(String key){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
SortingParams sort=new SortingParams();
sort.desc();
return jedis.sort(key,sort);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return null;
}
}
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.Set;
import com.alibaba.fastjson.JSON;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;
import redis.clients.jedis.SortingParams;
/**
*
*备注:使用ShardedJedisPool
* 切片链接池
*提交:qinxuewu
*时间:2015年8月20日下午4:40:57
*
*/
public class RedisShardPoolUtil {
public static ShardedJedisPool jedisPool ; //切片连接池
static {
try {
List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
shards.add( new JedisShardInfo("127.0.0.1",6379));
//shards.add( new JedisShardInfo("192.168.56.102", 6379) );
JedisPoolConfig config = new JedisPoolConfig();
//设置最大连接数
config.setMaxTotal(300);
//设置最大空闲数
config.setMaxIdle(600);
//设置超时时间
config.setMaxWaitMillis(3000);
// 在应用初始化的时候生成连接池
jedisPool = new ShardedJedisPool(config, shards);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 向缓存中设置字符串内容
* 失败返回0 不覆盖 成功 返回1
* @param key key
* @param value value
* @return
* @throws Exception
*/
public static long setnax(String key,String value){
ShardedJedis client=null;
try {
//从切片池中获取实例
client = jedisPool.getResource();
return client.setnx(key, value);
} catch (Exception e) {
e.printStackTrace();
}finally{
client.close();
}
return 0;
}
/** 成功返回 OK
* 向缓存中设置对象(自动把对象转换成json数据存储到缓层中)
* @param key
* @param value
* @return
*/
public static long setnx(String key,Object value){
ShardedJedis jedis=null;
try {
String objectJson = JSON.toJSONString(value);
jedis = jedisPool.getResource();
return jedis.setnx(key, objectJson);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return 0;
}
/**
* 删除缓存中得对象,根据key
* @param key
* @return
*/
public static boolean del(String key){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
jedis.del(key);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}finally{
jedis.close();
}
}
/**
* 根据key 获取内容
* @param key
* @return
*/
public static Object get(String key){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
Object value = jedis.get(key);
return value;
} catch (Exception e) {
e.printStackTrace();
return false;
}finally{
jedis.close();
}
}
/**
* 根据key 获取对象
* @param key
* @return
*/
public static <T> T get(String key,Class<T> clazz){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
String value = jedis.get(key);
return JSON.parseObject(value, clazz);
} catch (Exception e) {
e.printStackTrace();
return null;
}finally{
jedis.close();
}
}
/***
* 检查key是否存在
* @param key
* @return
* true 存在
* false 不存在
*/
public static boolean checkExists(String key){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.exists(key);
} catch (Exception e) {
e.printStackTrace();
return false;
}finally{
jedis.close();
}
}
/***
* 往指定的key追加内容,key不在则添加key
* @param key
* @param value
* @return
*/
public static boolean appendStr(String key,String value){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
jedis.append(key, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}finally{
jedis.close();
}
}
/***************************************hashes(哈希)类型*********************************************************/
/**
* 设置hash field
* 如果存在不会设置返回0
* @param key
* @param field
* @param value
* @return 成功返回1,失败 0
*/
public static long hset(String key,String field,String value){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.hset(key, field, value);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return 0;
}
/**
* hget取值(value)
* @param key
* @param field
* @return
*/
public static Object hget(String key,String field){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.hget(key, field) ;
} catch (Exception e) {
e.printStackTrace();
return null;
}finally{
jedis.close();
}
}
/**
* hmset 批量设置值
* @param key
* @param hashmap
* @return 成功返回OK
*/
public static String hmset(String key,Map<String, String> hashmap){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.hmset(key, hashmap);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return null;
}
/**
* hmget 批量取值(value)
* @param key
* @param field
* @return
*/
public static Object hmget (String key,String...fields){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.hmget(key, fields);
} catch (Exception e) {
e.printStackTrace();
return null;
}finally{
jedis.close();
}
}
/**
* @param key
* @return 返回所有的key和value
*/
public static Map<String, String> hgetall(String key){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.hgetAll(key);
} catch (Exception e) {
e.printStackTrace();
return null;
}finally{
jedis.close();
}
}
/**
* 指定自增,负数自减
* @param key
* @param field
* @param value
* @return
*/
public static long hincrby(String key,String field,long value){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.hincrBy(key, field, value) ;
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return 0;
}
/***
* 删除一个或多个哈希表
* @param key
* @param fields
* @return
*/
public static long hdel(String key,String...fields){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.hdel(key, fields);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return 0;
}
/***************************************list(列表)*********************************************************/
/**
* lpush 设置值 从头部压入一个元素
* @param key
* @param strings
* @return 成功返回成员的数量 失败返回0
*/
public static long lpush(String key,String...strings){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.lpush(key, strings);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return 0;
}
/**
* rpush 从尾部压入一个元素
* @param key
* @param strings
* @return 成功返回成员的数量 失败返回0
*/
public static long rpush (String key,String...strings){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.rpush (key, strings);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return 0;
}
/**
* list列表取值(lrange)
* @param key
* @param start
* @param end
* @return start=0 end=-1(代表从开始到结束)
*/
public static Object lrange (String key,long start,long end){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.lrange(key, start, end);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return 0;
}
/**
* 从头部删除元素,并返回删除元素
* @param key
* @return
*/
public static String lpop (String key){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.lpop(key);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return null;
}
/**
* 根据下表获取元素
* @param key
* @param index
* @return
*/
public static String lindex(String key,int index){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.lindex(key, index);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return null;
}
/**
* 获取列表对应的长度
* @param key
* @param index
* @return
*/
public static long llen (String key){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.llen(key);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return 0;
}
/***************************************set集合*********************************************************/
/**
* 向集合成添加一个或多个成员
* @param key
* @param members
* @return
*/
public static long sadd (String key,String...members){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.sadd(key, members) ;
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return 0;
}
/**
* 获取集合的成员个数
* @param key
* @param index
* @return
*/
public static long scard(String key){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.scard(key);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return 0;
}
/**
* 返回集合中的所有成员
* @param key
* @param index
* @return
*/
public static Set<String> smembers(String key){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.smembers(key);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return null;
}
/***************************************sorted set******************************************************/
/**
* 向有序集合中添加一个或多个成员,或者更新已存在成员的分数
* @param key
* @param scoreMembers
* @return
*/
public static long zadd (String key,Map<String, Double> scoreMembers){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.zadd(key, scoreMembers);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return 0;
}
/***
* 排序
* @param key
* @param sortingParameters
* @return
*/
public static List<String> sort(String key,SortingParams sortingParameters){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.sort(key, sortingParameters);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return null;
}
/***
* 排序 从大到小
* @param key
* @param sortingParameters
* @return
*/
public static List<String> sort(String key){
ShardedJedis jedis=null;
try {
jedis = jedisPool.getResource();
SortingParams sort=new SortingParams();
sort.desc();
return jedis.sort(key,sort);
} catch (Exception e) {
e.printStackTrace();
}finally{
jedis.close();
}
return null;
}
}