【笔记】redis实现类

package hry.redis.common.utils.impl;

import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.annotation.Resource;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import hry.redis.common.utils.RedisService;
import hry.redis.common.utils.SerializeUtil;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPubSub;
import redis.clients.jedis.Tuple;

/**
 */
public class RedisServiceImpl implements RedisService {

	@Resource(name = "jedisPool")
	private JedisPool jedisPool;

	// 锁前缀
	private static final String LOCK_PREFIX = "LOCK:LOCK_";

	private static final int timeout = 20;

	private static final int time = 10 * 1000;

	@Override
	public String save(String key, String value) {
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			return jedis.set(key, value);
		} catch (Exception e) {
			e.printStackTrace();
			return "";
		} finally {
			jedis.close();
		}
	}

	@Override
	public Map<String, String> getMap(String key) {
		Jedis jedis = null;

		try {
			jedis = this.jedisPool.getResource();
			Map<String, String> map = jedis.hgetAll(key);
			Map var4 = map;
			return var4;
		} catch (Exception var8) {
			var8.printStackTrace();
		} finally {
			jedis.close();
		}

		return null;
	}

	@Override
	public String getMap(String key, String code) {
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			String ss = jedis.hget(key, code);
			return ss;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			jedis.close();
		}
		return null;
	}

	@Override
	public void hset(String hkey, String key, String value) {
		Jedis jedis = null;

		try {
			jedis = this.jedisPool.getResource();
			jedis.hset(hkey,key,value);
		} catch (Exception var8) {
			var8.printStackTrace();
		} finally {
			jedis.close();
		}

	}

	@Override
	public <T> List<T> getList(String key) {
		Jedis jedis = null;
		try {

			jedis = jedisPool.getResource();
			byte[] in = jedis.get(key.getBytes());
			List<T> list = (List<T>) SerializeUtil.unserialize(in);
			return list;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			jedis.close();
		}
		return null;
	}

	@Override
	public <T> void setList(String key, List<T> list) {

		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			jedis.set(key.getBytes(), SerializeUtil.serialize(list));
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			jedis.close();
		}
	}

	@Override
	public void saveMap(String key, Map<String, String> map) {
		Jedis jedis = null;

		try {
			jedis = this.jedisPool.getResource();
			jedis.hmset(key, map);
		} catch (Exception var8) {
			;
		} finally {
			jedis.close();
		}

	}

	@Override
	public void save(String key, String value, int second) {
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			jedis.set(key, value);
			jedis.expire(key, second);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			jedis.close();
		}
	}

	@Override
	public String get(String key) {
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			return jedis.get(key);
		} catch (Exception e) {
			e.printStackTrace();
			return "";
		} finally {
			jedis.close();
		}
	}

	@Override
	public Long delete(String key) {
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			return jedis.del(key);
		} catch (Exception e) {
			e.printStackTrace();
			return (long) 0;
		} finally {
			jedis.close();
		}
	}

	@Override
	public void setTime(String key, int second) {
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			jedis.expire(key, second);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			jedis.close();
		}
	}


	/***
	 *
	 * @param patt
	 * @return
	 */
	@Override
	public Set<String> keys(String patt) {

		Jedis jedis = jedisPool.getResource();
		try {
			Set<String> keys = jedis.keys("*" + patt + "*");
			return keys;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			jedis.close();
		}

		return null;
	}

	@Override
	public Set<String> hkeys(final String key){
		Jedis jedis = jedisPool.getResource();
		try {
			Set<String> keys = jedis.hkeys(key);
			return keys;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			jedis.close();
		}
		return null;
	}

	@Override
	public String getLendConfig(String key) {

		String val = "";
		Jedis jedis = jedisPool.getResource();
		try {
			String string = jedis.get("configCache:financeLendConfig");
			JSONObject obj = JSON.parseObject(string);
			if (null != key && obj.get(key) != null) {
				val = obj.get(key).toString();
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			jedis.close();
		}
		return val;

	}

	@Override
	public String hget(String hkey, String key) {

		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			return jedis.hget(hkey, key);
		} catch (Exception e) {
			e.printStackTrace();
			return "";
		} finally {
			jedis.close();
		}

	}

	@Override
	public Map<String,String> hgetall(String hkey) {

		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			return jedis.hgetAll(hkey);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		} finally {
			jedis.close();
		}

	}

	/**
	 * 获取key生存时间
	 */
	@Override
	public Long getKeyTime(String key) {
		Jedis jedis = jedisPool.getResource();
		try {
			Long l = jedis.ttl(key);
			return l;
		} catch (Exception e) {
		} finally {
			jedis.close();
		}
		return null;
	}

	@Override
	public Set<String> noPerkeys(String patt) {


		Jedis jedis = jedisPool.getResource();
		try {
			Set<String> keys = jedis.keys(patt + "*");
			return keys;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			jedis.close();
		}

		return null;

	}

	/**
	 * 加锁
	 *
	 * @param key
	 * @return
	 */
	@Override
	public boolean lock(String key) {
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			String nkey = LOCK_PREFIX + key;
			String value = System.currentTimeMillis() + time + "";
			Long result = jedis.setnx(nkey, value);
			if (result == 1) {
				jedis.expire(nkey, timeout);
				return true;
			} else {
				String dkey = jedis.get(LOCK_PREFIX + key);
				Long skey = dkey != null ? Long.valueOf(dkey) : null;
				long currentTime = System.currentTimeMillis();
				if ((null != skey && skey > currentTime) || skey == null) {
					String svalue = System.currentTimeMillis() + time + "";
					Long setnx = jedis.setnx(nkey, svalue);
					if (setnx == 1) {
						jedis.expire(nkey, timeout);
						return true;
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		} finally {
			jedis.close();
		}
		return false;
	}

	/**
	 * 释放锁
	 *
	 * @param key
	 */
	@Override
	public void unLock(String key) {
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			String nkey = LOCK_PREFIX + key;

			jedis.del(nkey);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			jedis.close();
		}
	}

	/**
	 * 保存一个单个键值对进到map里.如果mKey已经存在于map里将会覆盖之前的值。
	 *
	 * @param key
	 * @param mKey
	 * @param value
	 */
	@Override
	public void saveMap(String key, String mKey, String value) {
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			jedis.hset(key, mKey, value);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			jedis.close();
		}
	}

	/**
	 * 删除某个key 所对应的value。
	 *
	 * @param key
	 * @param mKey
	 * @return
	 */
	@Override
	public String delMapKey(String key, String mKey) {
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			String ss = jedis.hget(key, mKey);
			return ss;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			jedis.close();
		}
		return null;
	}

	@Override
	public Long getExpireTime(String key) {
		Long result = -2L;
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			result = jedis.ttl(key);
			return result;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(jedis != null) {
				jedis.close();
			}
		}
		return result;
	}

	@Override
	public void rpush(String key, String value) {
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			jedis.rpush(key,value);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(jedis != null) {
				jedis.close();
			}
		}
	}
	@Override
	public void zadd(String key,double score, String value) {
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			jedis.zadd(key,score,value);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(jedis != null) {
				jedis.close();
			}
		}
	}

	@Override
	public void zream(String key, double score) {
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			jedis.zremrangeByScore(key,score,score);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(jedis != null) {
				jedis.close();
			}
		}
	}

	@Override
	public Set<String> zrange(String key, long start,long end) {
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			return jedis.zrange(key,start,end);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(jedis != null) {
				jedis.close();
			}
		}
		return null;
	}

	@Override
	public Set<String> zrangeByScore(String key, double min,double max) {
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			return  jedis.zrangeByScore(key, min, max);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(jedis != null) {
				jedis.close();
			}
		}
		return null;
	}

	@Override
	public Long setnx(String key, String value){
        Jedis jedis = null;
        Long result = null;
        try {
        	jedis = jedisPool.getResource();
            result = jedis.setnx(key, value);
            return result;
        } catch (Exception e){
            e.printStackTrace();
        } finally {
            if (jedis != null) {
            	jedisPool.returnResource(jedis);
            }
        }
        return null;
    }

	@Override
	public Long expire(String key, int seconds){
        Jedis jedis = null;
        Long result = null;
        try {
        	jedis = jedisPool.getResource();
            result = jedis.expire(key, seconds);
            return result;
        } catch (Exception e){
            e.printStackTrace();
        } finally {
            if (jedis != null) {
            	jedisPool.returnResource(jedis);
            }
        }
        return null;
    }


	@Override
	public void publish(String channel, String message) {
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			jedis.publish(channel,message);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			jedis.close();
		}
	}

	@Override
	public void subscribe(JedisPubSub jedisPubSub, String channel) {
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			jedis.subscribe(jedisPubSub,channel);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			jedis.close();
		}
	}

	/**
	 * set sadd
	 * @param key
	 * @param val
	 * @return
	 * @author denghf
	 */
	public Long sadd(String key, String... val){
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			return jedis.sadd(key, val);
		} catch (Exception e) {
			e.printStackTrace();
			return 0L;
		} finally {
			jedis.close();
		}
	}

	/**
	 * set smembers
	 * @param key
	 * @return
	 * @author denghf
	 */
	public Set<String> smembers(String key){
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			Set<String> smembers = jedis.smembers(key);
			return smembers;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		} finally {
			jedis.close();
		}
	}

	/**
	 * zremrangeByScore
	 * @param key
	 * @param scoreMin
	 * @param scoreMax
	 * @return
	 * @author denghf
	 */
	@Override
	public Long zremrangeByScore(String key, double scoreMin, double scoreMax) {
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			Long aLong = jedis.zremrangeByScore(key, scoreMin, scoreMax);
			return aLong;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		} finally {
			jedis.close();
		}
	}

	/**
	 * zscore
	 * @param key
	 * @param member
	 * @return
	 * @author denghf
	 */
	public Long zrank(String key, String member){
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			Long aLong = jedis.zrank(key, member);
			return aLong;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		} finally {
			jedis.close();
		}
	}

	/**
	 * zscore
	 * @param key
	 * @param member
	 * @return
	 * @author denghf
	 */
	public Double zscore(String key, String member){
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			Double aLong = jedis.zscore(key, member);
			return aLong;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		} finally {
			jedis.close();
		}
	}

	/**
	 * zrem
	 * @param key
	 * @param members
	 * @return
	 * @author denghf
	 */
	public Long zrem(String key, String... members){
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			Long aLong = jedis.zrem(key, members);
			return aLong;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		} finally {
			jedis.close();
		}
	}

	/**
	 * zrangeWithScores
	 * @param key
	 * @param start
	 * @param end
	 * @return
	 */
	@Override
	public Set<Tuple> zrangeWithScores(String key, long start,long end) {
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			Set<Tuple> tuples = jedis.zrangeWithScores(key, start, end);
			return tuples;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(jedis != null) {
				jedis.close();
			}
		}
		return null;
	}

	/**
	 * lpop
	 * @param key
	 * @return
	 * @author denghf
	 */
	public String lpop(String key){
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			String lpop = jedis.lpop(key);
			return lpop;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(jedis != null) {
				jedis.close();
			}
		}
		return null;
	}

	/**
	 * lrange
	 * @param key
	 * @return
	 * @author denghf
	 */
	public List<String> lrange(String key, long start, long end){
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			List<String> lrange = jedis.lrange(key, start, end);
			return lrange;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(jedis != null) {
				jedis.close();
			}
		}
		return null;
	}

	/**
	 * lrem
	 * @param key
	 * @return
	 * @author denghf
	 */
	public Long lrem(String key, long count, String value){
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			Long lrem = jedis.lrem(key, count, value);
			return lrem;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(jedis != null) {
				jedis.close();
			}
		}
		return null;
	}

	/**
	 * hdel
	 * @param key
	 * @return
	 * @author denghf
	 */
	public Long hdel(String key, String... field){
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			Long hdel = jedis.hdel(key, field);
			return hdel;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(jedis != null) {
				jedis.close();
			}
		}
		return null;
	}

	/**
	 * lpush
	 * @param key
	 * @return
	 * @author denghf
	 */
	public Long lpush(String key, String... val){
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			Long lpush = jedis.lpush(key, val);
			return lpush;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(jedis != null) {
				jedis.close();
			}
		}
		return null;
	}

	/**
	 * set
	 * @param key
	 * @param val
	 * @author denghf
	 * @return
	 */
	public String set(byte[] key, byte[] val){
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			String set = jedis.set(key, val);
			return set;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(jedis != null) {
				jedis.close();
			}
		}
		return null;
	}

	/**
	 * get
	 * @param key
	 * @author denghf
	 * @return
	 */
	public byte[] get(byte[] key){
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			byte[] bytes = jedis.get(key);
			return bytes;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(jedis != null) {
				jedis.close();
			}
		}
		return null;
	}
	@Override
	public Set<String> delkeys(String patt) {

		Jedis jedis = jedisPool.getResource();
		try {
			Set<String> keys = jedis.keys("*" + patt + "*");
			Iterator<String> iterator = keys.iterator();
			while (iterator.hasNext()) {
				jedis.del(iterator.next());
			}

			return keys;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			jedis.close();
		}

		return null;
	}

	@Override
	public Set<String> zrevrange(String key, long start,long end) {
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			return jedis.zrevrange(key, start, end);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(jedis != null) {
				jedis.close();
			}
		}
		return null;
	}

	@Override
	public Set<String> zrevrangeByScore(String key, String start,String end) {
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			return jedis.zrevrangeByScore(key, start, end);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(jedis != null) {
				jedis.close();
			}
		}
		return null;
	}
}

  

posted @ 2022-04-02 20:54  我的bug  阅读(36)  评论(0编辑  收藏  举报