package util;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import com.alibaba.fastjson.JSON;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class RedisUtils {
private volatile static RedisUtils REDISUTILS = null;
private static JedisPoolConfig jedisPoolconfig = null;
private static JedisPool redisPool = null;
public JedisPool getRedisPool() {
return redisPool;
}
private RedisUtils() {
inItRedisPool();
}
public void returnResource(Jedis jedis){
if(jedis!=null){
redisPool.returnResource(jedis);
}
}
// 单例模式
/**
* 得到redis连接实例
*/
public static RedisUtils getInstance() {
if (REDISUTILS == null) {
synchronized(RedisUtils.class){
if (REDISUTILS == null) {
REDISUTILS = new RedisUtils();
}
}
}
return REDISUTILS;
}
/**
* 获取连接池redis_pool
*/
private void inItRedisPool() {
if (jedisPoolconfig == null){
jedisPoolconfig = new JedisPoolConfig();
}
jedisPoolconfig.setMaxActive(500);
jedisPoolconfig.setMaxIdle(10);
jedisPoolconfig.setMaxWait(3000L);
jedisPoolconfig.setTestOnBorrow(true);
if(redisPool==null){
redisPool=new JedisPool(jedisPoolconfig, ConfigUtil.LOCALHOST_REDIS_SERVER, ConfigUtil.LOCALHOST_REDIS_PORT,ConfigUtil.REDIS_TIMEOUT);
}
}
/**
*
* 项目名称:redisutil
* 描述: 将字符串值 value 关联到 key
* @param @param key
* @param @param value
* @param @return
* @return boolean
*
*/
public boolean setString(String key,String value){
Jedis jedis =redisPool.getResource();
try{
String isok=jedis.set(key,value);
if("OK".equals(isok.toUpperCase())){
return true;
}
}
catch(Exception e){
e.printStackTrace();
}
finally{
redisPool.returnResource(jedis);
}
return false;
}
/*
* 加1
*/
public boolean incrString(String key){
Jedis jedis =redisPool.getResource();
try{
Long isok=jedis.incr(key);
if(isok==1){
return true;
}
}
catch(Exception e){
e.printStackTrace();
}
finally{
redisPool.returnResource(jedis);
}
return false;
}
/**
*
* 项目名称:redisutil
* 描述: 将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位)
* @param @param key
* @param @param seconds
* @param @param value
* @param @return
* @return boolean
*
*/
public boolean setexString(String key,int seconds,String value){
Jedis jedis =redisPool.getResource();
try{
String isok=jedis.setex(key, seconds, value);
if("OK".equals(isok.toUpperCase())){
return true;
}
}
catch(Exception e){
e.printStackTrace();
}
finally{
redisPool.returnResource(jedis);
}
return false;
}
/**
*
* 项目名称:redisutil
* 描述: 将字符串值 value 关联到 key
* @param @param key
* @param @param obj
* @param @return
* @return boolean
*
*/
public boolean setString(String key,Object obj){
Jedis jedis =redisPool.getResource();
try{
String isok=jedis.set(key,JSON.toJSONString(obj));
if("OK".equals(isok.toUpperCase())){
return true;
}
}
catch(Exception e){
e.printStackTrace();
}
finally{
redisPool.returnResource(jedis);
}
return false;
}
/**
*
* 项目名称:redisutil
* 描述: 将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位)。
* @param @param key
* @param @param seconds
* @param @param obj
* @return boolean
*
*/
public boolean setexString(String key,int seconds,Object obj){
Jedis jedis =redisPool.getResource();
try{
String isok=jedis.setex(key,seconds,JSON.toJSONString(obj));
if("OK".equals(isok.toUpperCase())){
return true;
}
}
catch(Exception e){
e.printStackTrace();
}
finally{
redisPool.returnResource(jedis);
}
return false;
}
/**
*
* 项目名称:redisutil
* 描述: 返回 key 所关联的字符串值。
* @param @param key
* @param @return
* @return String
*
*/
public String getString(String key){
Jedis jedis =redisPool.getResource();
try{
return jedis.get(key);
}
catch(Exception e){
e.printStackTrace();
}
finally{
redisPool.returnResource(jedis);
}
return null;
}
/**
*
* 项目名称:redisutil
* 描述: 返回 key 所关联的字符串值。
* @param @param key
* @param @param obj
* @param @return
* @return Object
*
*/
public Object getStringToObj(String key,Object obj){
Jedis jedis =redisPool.getResource();
try{
String value=jedis.get(key);
if(StringUtils.isNotEmpty(value)){
return JSON.parseObject(value,obj.getClass());
}
}
catch(Exception e){
e.printStackTrace();
}
finally{
redisPool.returnResource(jedis);
}
return null;
}
/**
*
* 项目名称:redisutil
* 描述: 删除给定的一个或多个 key
* @param @param key
* @param @return
* @return long
*
*/
public long delKey(String key){
Jedis jedis =redisPool.getResource();
try{
return jedis.del(key);
}
catch(Exception e){
e.printStackTrace();
}
finally{
redisPool.returnResource(jedis);
}
return 0;
}
/**
*
* 项目名称:sr_sms
* 描述: key是否存在
* @param @param key
* @param @return
* @return boolean
*
*/
public boolean isKey(String key){
Jedis jedis =redisPool.getResource();
try{
return jedis.exists(key);
}
catch(Exception e){
e.printStackTrace();
}
finally{
redisPool.returnResource(jedis);
}
return false;
}
/**
*
* 项目名称:redisutil
* 描述: 为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。
* @param @param key
* @param @param seconds
* @param @return
* @return long
*
*/
public long expire(String key,int seconds){
Jedis jedis =redisPool.getResource();
try{
return jedis.expire(key,seconds);
}
catch(Exception e){
e.printStackTrace();
}
finally{
redisPool.returnResource(jedis);
}
return 0;
}
/**
*
* 项目名称:redisutil
* 描述: 将一个值 value 插入到列表 key 的表头
* @param @param key
* @param @param value
* @param @return
* @return long
*
*/
public long addListLpush(String key,String value){
Jedis jedis =redisPool.getResource();
try{
return jedis.lpush(key,value);
}
catch(Exception e){
e.printStackTrace();
}
finally{
redisPool.returnResource(jedis);
}
return 0;
}
/**
*
* 项目名称:redisutil
* 描述: 将一个值 value 插入到列表 key 的表头
* @param @param key
* @param @param obj
* @param @return
* @return long
*
*/
public long addListLpush(String key,Object obj){
Jedis jedis =redisPool.getResource();
try{
return jedis.lpush(key,JSON.toJSONString(obj));
}
catch(Exception e){
e.printStackTrace();
}
finally{
redisPool.returnResource(jedis);
}
return 0;
}
/**
*
* 项目名称:redisutil
* 描述: 将一个值 value 插入到列表 key 的表尾
* @param @param key
* @param @param value
* @param @return
* @return long
*
*/
public long addListRpush(String key,String value){
Jedis jedis =redisPool.getResource();
try{
return jedis.rpush(key,value);
}
catch(Exception e){
e.printStackTrace();
}
finally{
redisPool.returnResource(jedis);
}
return 0;
}
/**
*
* 项目名称:redisutil
* 描述: 将一个值 value 插入到列表 key 的表尾
* @param @param key
* @param @param obj
* @param @return
* @return long
*
*/
public long addListRpush(String key,Object obj){
Jedis jedis =redisPool.getResource();
try{
return jedis.rpush(key,JSON.toJSONString(obj));
}
catch(Exception e){
e.printStackTrace();
}
finally{
redisPool.returnResource(jedis);
}
return 0;
}
/**
*
* 项目名称:redisutil
* 描述: 移除并返回列表 key 的尾元素。
* @param @param key
* @param @return
* @return String
*
*/
public String getListRpop(String key){
Jedis jedis =redisPool.getResource();
try{
return jedis.rpop(key);
}
catch(Exception e){
e.printStackTrace();
}
finally{
redisPool.returnResource(jedis);
}
return null;
}
/**
*
* 项目名称:redisutil
* 描述: 移除并返回列表 key 的尾元素。
* @param @param key
* @param @param obj
* @param @return
* @return Object
*
*/
public Object getListRpopToObj(String key,Object obj){
Jedis jedis =redisPool.getResource();
try{
String s=jedis.rpop(key);
if(StringUtils.isNotEmpty(key)){
return JSON.parseObject(s,obj.getClass());
}
}
catch(Exception e){
e.printStackTrace();
}
finally{
redisPool.returnResource(jedis);
}
return null;
}
/**
*
* 项目名称:redisutil
* 描述: 移除并返回列表 key 的头元素。
* @param @param key
* @param @return
* @return String
*
*/
public String getListLpop(String key){
Jedis jedis =redisPool.getResource();
try{
return jedis.lpop(key);
}
catch(Exception e){
e.printStackTrace();
}
finally{
redisPool.returnResource(jedis);
}
return null;
}
/**
*
* 项目名称:redisutil
* 描述: 移除并返回列表 key 的头元素。
* @param @param key
* @param @param obj
* @param @return
* @return Object
*
*/
public Object getListLpopToObj(String key,Object obj){
Jedis jedis =redisPool.getResource();
try{
String s=jedis.lpop(key);
if(StringUtils.isNotEmpty(key)){
return JSON.parseObject(s,obj.getClass());
}
}
catch(Exception e){
e.printStackTrace();
}
finally{
redisPool.returnResource(jedis);
}
return null;
}
/**
*
* 项目名称:redisutil
* 描述: 返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。
* @param @param key
* @param @param start
* @param @param end
* @param @return
* @return List
*
*/
public List findListLrange(String key,int start,int end){
Jedis jedis =redisPool.getResource();
try{
return jedis.lrange(key, start, end);
}
catch(Exception e){
e.printStackTrace();
}
finally{
redisPool.returnResource(jedis);
}
return new ArrayList();
}
/**
*
* 项目名称:redisutil
* 描述: 返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。
* @param @param key
* @param @param start
* @param @param end
* @param @param obj
* @param @return
* @return List
*
*/
public List findListLrange(String key,int start,int end,Object obj){
Jedis jedis =redisPool.getResource();
List arrayList=new ArrayList();
try{
List list=jedis.lrange(key, start, end);
for(Iterator<String> it=list.iterator();it.hasNext();){
arrayList.add(JSON.parseObject(it.next(),obj.getClass()));
}
return arrayList;
}
catch(Exception e){
e.printStackTrace();
}
finally{
redisPool.returnResource(jedis);
}
return new ArrayList();
}
/**
*
* 项目名称:redisutil
* 描述: 返回列表 key 中的数据
* @param @param key
* @param @return
* @return List
*
*/
public List findListLrange(String key){
Jedis jedis =redisPool.getResource();
try{
return jedis.lrange(key, 0, jedis.llen(key));
}
catch(Exception e){
e.printStackTrace();
}
finally{
redisPool.returnResource(jedis);
}
return new ArrayList();
}
/**
*
* 项目名称:redisutil
* 描述: 返回列表 key 中的数据
* @param @param key
* @param @param obj
* @param @return
* @return List
*
*/
public List findListLrange(String key,Object obj){
Jedis jedis =redisPool.getResource();
List arrayList=new ArrayList();
try{
List list=jedis.lrange(key, 0,jedis.llen(key));
for(Iterator<String> it=list.iterator();it.hasNext();){
arrayList.add(JSON.parseObject(it.next(),obj.getClass()));
}
return arrayList;
}
catch(Exception e){
e.printStackTrace();
}
finally{
redisPool.returnResource(jedis);
}
return new ArrayList();
}
/**
* key返回列表key的长度
* @param key
* @return
*/
public Long getLength(String key) {
Jedis jedis = redisPool.getResource();
try {
return jedis.llen(key);
} catch (Exception e) {
e.printStackTrace();
} finally {
redisPool.returnResource(jedis);
}
return 0L;
}
public static void main(String[] args) {
RedisUtils redisUtil = RedisUtils.getInstance();
// Jedis jedis =redisPool.getResource();
// jedis.sadd("lwp","1");
// jedis.sadd("lwp","2");
// jedis.sadd("lwp","3");
// Set<String> set=jedis.smembers("lwp");
// Object[] o=set.toArray();
// List list=Arrays.asList(o);
// redisUtil.setString("lwp", "123");
// System.out.println(redisUtil.getString("lwp"));
// Test t=new Test();
// t.setId("1");
// t.setName("lwp");
// redisUtil.addListRpush("lwp",t);
// redisUtil.addListRpush("lwp",t);
// System.out.println(redisUtil.findListLrange("lwp",new Test()).size());
// System.out.println(redisUtil.delKey("lwp"));
// redisUtil.setString("a", "1");
// System.out.println(redisUtil.getString("b"));
// System.out.println(redisUtil.isKey("a"));
// redisUtil.delKey("b");
// redisUtil.addListLpush("b", "11");
// redisUtil.addListLpush("b", "22");
// int i = 0;
//// System.out.println(redisUtil.getLength("b")>=i);
// System.out.println(!redisUtil.isKey("b"));
// System.out.println(redisUtil.findListLrange("b"));
//// System.out.println(redisUtil.findListLrange("b",1,1));
// Long len = redisUtil.getLength("b");
// List list = redisUtil.findListLrange("b",len.intValue()-1,len.intValue()-1);
// System.out.println(list.get(0));
// System.out.println(redisUtil.getListRpop("b"));//从尾取
// redisUtil.delKey("b");
// long l = 1363176871825l;
// System.out.println(System.currentTimeMillis()-l);
// String s = "18658850522";
// System.out.println(s.substring(0, 7));
// long date = System.currentTimeMillis();
}
}
jedis缓存
最新推荐文章于 2024-06-18 11:06:44 发布