package io.github.flylib.flycache.redis; import java.util.Map; import java.util.Set; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; /** * @author liushaoming * @Package io.github.flylib.flycache.redis * @Description: * @date 2018-1-19 10:18 */ public class RedisClient { private Logger logger = LoggerFactory.getLogger(RedisClient.class); private JedisPool jedisPool; public RedisClient() { } public RedisClient(JedisPool jedisPool) { this.jedisPool = jedisPool; } public JedisPool getJedisPool() { return jedisPool; } public void setJedisPool(JedisPool jedisPool) { this.jedisPool = jedisPool; } /** * * @param jedis */ private static void closeJedis(Jedis jedis) { if (jedis != null) { jedis.close(); } } public String flushDB() { Jedis jedis = null; String result = null; try { jedis = jedisPool.getResource(); result = jedis.flushDB(); } catch (Exception e) { e.printStackTrace(); } finally { closeJedis(jedis); } return result; } /** * <p> * 通过key获取储存在redis中的value * </p> * <p> * 并释放连接 * </p> * * @param key * @return 成功返回value 失败返回null */ public String get(String key) { Jedis jedis = null; String value = null; try { jedis = jedisPool.getResource(); value = jedis.get(key); } catch (Exception e) { e.printStackTrace(); } finally { closeJedis(jedis); } return value; } /** * <p> * 向redis存入key和value,并释放连接资源 * </p> * <p> * 如果key已经存在 则覆盖 * </p> * * @param key * @param value * @return 成功 返回OK 失败返回 0 */ public String set(String key, String value) { Jedis jedis = null; try { jedis = jedisPool.getResource(); return jedis.set(key, value); } catch (Exception e) { e.printStackTrace(); return "0"; } finally { closeJedis(jedis); } } /** * <p> * 返回满足pattern表达式的所有key * </p> * <p> * keys(*) * </p> * <p> * 返回所有的key * </p> * * @param pattern * @return */ public Set<String> keys(String pattern) { Jedis jedis = null; Set<String> res = null; try { jedis = jedisPool.getResource(); res = jedis.keys(pattern); } catch (Exception e) { e.printStackTrace(); } finally { closeJedis(jedis); } return res; } /** * <p> * 删除指定的key,也可以传入一个包含key的数组 * </p> * * @param keys 一个key 也可以使 string 数组 * @return 返回删除成功的个数 */ public Long del(String... keys) { Jedis jedis = null; try { jedis = jedisPool.getResource(); return jedis.del(keys); } catch (Exception e) { e.printStackTrace(); return 0L; } finally { closeJedis(jedis); } } /** * <p> * 通过key 和 field 获取指定的 value * </p> * * @param key * @param field * @return 没有返回null */ public String hget(String key, String field) { Jedis jedis = null; String res = null; try { jedis = jedisPool.getResource(); res = jedis.hget(key, field); } catch (Exception e) { e.printStackTrace(); } finally { closeJedis(jedis); } return res; } /** * <p> * 通过key获取所有的field和value * </p> * * @param key * @return */ public Map<String, String> hgetAll(String key) { Jedis jedis = null; Map<String, String> res = null; try { jedis = jedisPool.getResource(); res = jedis.hgetAll(key); } catch (Exception e) { e.printStackTrace(); } finally { closeJedis(jedis); } return res; } /** * <p> * 通过key 删除指定的 field * </p> * * @param key * @param fields 可以是 一个 field 也可以是 一个数组 * @return */ public Long hdel(String key, String... fields) { Jedis jedis = null; Long res = null; try { jedis = jedisPool.getResource(); res = jedis.hdel(key, fields); } catch (Exception e) { e.printStackTrace(); } finally { closeJedis(jedis); } return res; } /** * <p> * 通过key给field设置指定的值,如果key不存在,则先创建 * </p> * * @param key * @param field 字段 * @param value * @return 如果存在返回0 异常返回null */ public Long hset(String key, String field, String value) { Jedis jedis = null; Long res = null; try { jedis = jedisPool.getResource(); res = jedis.hset(key, field, value); } catch (Exception e) { e.printStackTrace(); } finally { closeJedis(jedis); } return res; } }