redis java代码实现

	private static Logger log = Logger.getLogger(RedisTool.class);
	private static JedisPool pool = null;

	/**
	 * 构建redis连接池
	 * 
	 * @param ip
	 * @param port
	 * @return JedisPool
	 */
	public static JedisPool getPool() {
		if (pool == null) {
			JedisPoolConfig config = new JedisPoolConfig();
			// 如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
			config.setMaxActive(20);
			// 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例。
			config.setMaxIdle(5);
			// 表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;
			config.setMaxWait(1000 * 100);
			// 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
			config.setTestOnBorrow(true);
			
			pool = new JedisPool(config, SystemContent.REDIS_HOST,SystemContent.REDIS_PORT);
		}
		return pool;
	}

	/**
	 * 返还到连接池
	 * 
	 * @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) {
			// 释放redis对象
			pool.returnBrokenResource(jedis);
			e.printStackTrace();
		} finally {
			// 返还到连接池
			returnResource(pool, jedis);
		}
		return value;
	}
	/**
	 * String 类型的计数器
	 */
	public static void set(String key,String value){
		JedisPool pool = null;
		Jedis jedis = null;
		try {
			pool = getPool();
			jedis = pool.getResource();
			jedis.set(key, value);
		} catch (Exception e) {
			// 释放redis对象
			pool.returnBrokenResource(jedis);
			e.printStackTrace();
		} finally {
			// 返还到连接池
			returnResource(pool, jedis);
		}
	}
	/**
	 * List 移除并返回列表 key的头元素(最左边)。
	 */
	public static String lPop(String key){
		JedisPool pool = null;
		Jedis jedis = null;
		String value = null;
		try {
			pool = getPool();
			jedis = pool.getResource();
			value = jedis.lpop(key);
		} catch (Exception e) {
			log.error(" lPop is error : "+ e.getMessage());
			// 释放redis对象
			pool.returnBrokenResource(jedis);
		}finally{
			// 返还到连接池
			returnResource(pool, jedis);
		}
		return value;
	}
	
	/**
	 * List  移除并返回列表 key的尾元素(最右边)。
	 */
	public static String rPop(String key){
		JedisPool pool = null;
		Jedis jedis = null;
		String value = null;
		try {
			pool = getPool();
			jedis = pool.getResource();
			value = jedis.rpop(key);
		} catch (Exception e) {
			log.error(" rPop is error : "+ e.getMessage());
			// 释放redis对象
			pool.returnBrokenResource(jedis);
		}finally{
			// 返还到连接池
			returnResource(pool, jedis);
		}
		return value;
	}
	
	/**
	 * List   将一个或多个值 value 插入到列表 key 的表尾(最右边)
	 */
	public static long rPush(String key,String...strings){
		long count = 0;
		JedisPool pool = null;
		Jedis jedis = null;
		try {
			pool = getPool();
			jedis = pool.getResource();
			count = jedis.rpush(key, strings);
		} catch (Exception e) {
			log.error(" rPush is error : "+ e.getMessage());
			// 释放redis对象
			pool.returnBrokenResource(jedis);
		} finally {
			// 返还到连接池
			returnResource(pool, jedis);
		}
		return count;
	}
	
	/**
	 * List   将一个或多个值 value 插入到列表 key 的头尾(最左边)
	 */
	public static long lPush(String key,String...strings){
		long count = 0;
		JedisPool pool = null;
		Jedis jedis = null;
		try {
			pool = getPool();
			jedis = pool.getResource();
			count = jedis.lpush(key, strings);
		} catch (Exception e) {
			log.error(" lPush is error : "+ e.getMessage());
			// 释放redis对象
			pool.returnBrokenResource(jedis);
		} finally {
			// 返还到连接池
			returnResource(pool, jedis);
		}
		return count;
	}
	/**
	 * List 根据key获取list
	 */
	public static List<String> getList(String key){
		List<String> list = null;
		JedisPool pool = null;
		Jedis jedis = null;
		try {
			pool = getPool();
			jedis = pool.getResource();
			list = jedis.lrange(key, 0, -1);
		} catch (Exception e) {
			log.error(" getList is error : "+ e.getMessage());
			// 释放redis对象
			pool.returnBrokenResource(jedis);
		} finally {
			// 返还到连接池
			returnResource(pool, jedis);
		}
		return list;
	}
	
	/**
	 * Hash  根据key获取hash
	 */
	public static Map<String,String> getHash(String key){
		Map<String,String> map = new HashMap<String,String>();
		JedisPool pool = null;
		Jedis jedis = null;
		try {
			pool = getPool();
			jedis = pool.getResource();
			map = jedis.hgetAll(key);
		} catch (Exception e) {
			log.error(" getHash is error : "+ e.getMessage());
			// 释放redis对象
			pool.returnBrokenResource(jedis);
		} finally{
			// 返还到连接池
			returnResource(pool,jedis);
		}
		return map;
	}
	
	/**
	 * Hash  同时将多个 field-value (域-值)对设置到哈希表 key 中
	 */
	public static String hmSet(String key,Map<String,String> hash){
		String result = "";
		JedisPool pool = null;
		Jedis jedis = null;
		try {
			pool = getPool();
			jedis = pool.getResource();
			result = jedis.hmset(key, hash);
		} catch (Exception e) {
			log.error(" hmSet is error : "+ e.getMessage());
			// 释放redis对象
			pool.returnBrokenResource(jedis);
		} finally{
			// 返还到连接池
			returnResource(pool,jedis);
		}
		return result;
	}
	
	/**
	 * 
	 * 设置单个fileld-value(域-值)到哈希表中
	 */
	
	public static long hset(String key,String field,String value){
		long result = 0;
		JedisPool pool = null;
		Jedis jedis = null;
		try {
			pool = getPool();
			jedis = pool.getResource();
			result = jedis.hset(key, field, value);
		} catch (Exception e) {
			log.error(" hmSet is error : "+ e.getMessage());
			// 释放redis对象
			pool.returnBrokenResource(jedis);
		} finally{
			// 返还到连接池
			returnResource(pool,jedis);
		}
		return result;
	}

 

你可能感兴趣的:(redis)