Browse Source

增加Redis的工具类

xian 6 years ago
parent
commit
70d4b39d9e
1 changed files with 193 additions and 0 deletions
  1. 193 0
      watero-common-tool/src/main/java/com/iamberry/redis/RedisUtils.java

+ 193 - 0
watero-common-tool/src/main/java/com/iamberry/redis/RedisUtils.java

@@ -0,0 +1,193 @@
+package com.iamberry.redis;
+
+import com.alibaba.fastjson.JSONObject;
+import com.iamberry.wechat.tools.NameUtils;
+import org.apache.log4j.Logger;
+import redis.clients.jedis.Jedis;
+import redis.clients.jedis.JedisPool;
+import redis.clients.jedis.JedisPoolConfig;
+
+import java.util.List;
+
+/**
+ * redis工具类
+ * @author root
+ */
+public class RedisUtils {
+
+    /**ip*/
+    private static final String IP = NameUtils.getConfig("redis_host");
+    /**端口*/
+    private static final int PORT = Integer.parseInt(NameUtils.getConfig("redis_port"));
+    /**密码(原始默认是没有密码)*/
+    private static final String AUTH = NameUtils.getConfig("redis_auth");
+    /**最大连接数*/
+    private static int   MAX_ACTIVE = Integer.parseInt(NameUtils.getConfig("redis_max_active"));
+    /**设置最大空闲数*/
+    private static int   MAX_IDLE = Integer.parseInt(NameUtils.getConfig("redis_max_idle"));
+    /**最大连接时间*/
+    private static int   MAX_WAIT = Integer.parseInt(NameUtils.getConfig("redis_max_wait"));
+    /**超时时间*/
+    private static int   TIMEOUT = Integer.parseInt(NameUtils.getConfig("redis_timeout"));
+
+    private static JedisPool pool = null;
+
+    private static Logger logger = Logger.getLogger(RedisUtils.class);
+
+    static {
+        /*
+         * 初始化线程池(只在类进行初始化的时候进行一次)
+         */
+        JedisPoolConfig config = new JedisPoolConfig();
+        config.setMaxTotal(MAX_ACTIVE);
+        config.setMaxIdle(MAX_IDLE);
+        config.setMaxWaitMillis(MAX_WAIT);
+        config.setTestOnBorrow(false);
+        config.setTestOnReturn(true);
+        config.setTestWhileIdle(true);
+        pool = new JedisPool(config, IP, PORT, TIMEOUT);
+    }
+
+    /**
+     * 获取连接
+     */
+    private static synchronized Jedis getJedis() {
+        try {
+            if(pool != null) {
+                Jedis jedis = pool.getResource();
+                jedis.auth(AUTH);
+                return jedis;
+            } else {
+                throw new RuntimeException("获取失败Redis实例失败,请重试");
+            }
+        } catch (Exception e) {
+            logger.error("", e);
+            throw e;
+        }
+    }
+
+    /**
+     * 插入对象
+     * @param key
+     * @param obj
+     * @return
+     */
+    public static boolean put(String key, Object obj) {
+        Jedis jedis = null;
+        try {
+            String value = JSONObject.toJSONString(obj);
+            jedis = getJedis();
+            return "ok".equalsIgnoreCase(jedis.set(key, value));
+        } catch (Exception e) {
+            logger.error("", e);
+        } finally {
+            getColse(jedis);
+        }
+        return false;
+    }
+
+    /**
+     * 插入对象
+     * @param key
+     * @param value
+     * @return
+     */
+    public static boolean put(String key, String value) {
+        Jedis jedis = null;
+        try {
+            jedis = getJedis();
+            return "ok".equalsIgnoreCase(jedis.set(key, value));
+        } catch (Exception e) {
+            logger.error("", e);
+        } finally {
+            getColse(jedis);
+        }
+        return false;
+    }
+
+    /**
+     * 获取单个对象
+     * @param key
+     * @param clazz
+     * @return
+     */
+    public static <T> T get(String key, Class<T> clazz) {
+        Jedis jedis = null;
+        try {
+            jedis = getJedis();
+            String result = jedis.get(key);
+            return JSONObject.parseObject(result, clazz);
+        } catch (Exception e) {
+            logger.error("", e);
+        } finally {
+            getColse(jedis);
+        }
+        return null;
+    }
+
+    /**
+     * 获取单个String对象
+     * @param key
+     * @return
+     */
+    public static String get(String key) {
+        Jedis jedis = null;
+        try {
+            jedis = getJedis();
+            return jedis.get(key);
+        } catch (Exception e) {
+            logger.error("", e);
+        } finally {
+            getColse(jedis);
+        }
+        return null;
+    }
+
+    /**
+     * 获取list集合
+     * @param key
+     * @param clazz
+     * @return
+     */
+    public static <T> List<T> list(String key, Class<T> clazz) {
+        Jedis jedis = null;
+        try {
+            jedis = getJedis();
+            String result = jedis.get(key);
+            return JSONObject.parseArray(result, clazz);
+        } catch (Exception e) {
+            logger.error("", e);
+        } finally {
+            getColse(jedis);
+        }
+        return null;
+    }
+
+    /**
+     * 删除key
+     * @param key
+     * @return
+     */
+    public static boolean del(String key) {
+        Jedis jedis = null;
+        try {
+            jedis = getJedis();
+            return jedis.del(key) >= 1;
+        } catch (Exception e) {
+            logger.error("", e);
+        } finally {
+            getColse(jedis);
+        }
+        return false;
+    }
+
+    /**
+     * 关闭连接
+     * @param jedis
+     */
+    private static void getColse(Jedis jedis) {
+        if(jedis != null) {
+            jedis.close();
+        }
+    }
+}