• Jedis API操作Redis数据库


    1、配置文件

    classpath路径下,新建redis.properties配置文件

    配置文件内容

    # Redis settings
    redis.host=127.0.0.1
    redis.port=6379
    redis.timeout=10000
    redis.maxIdle=300
    redis.maxTotal=600
    # 毫秒
    redis.maxWaitMillis=1000
    redis.testOnBorrow=false
    View Code

    新建属性文件工具类,用来读取redis.properties配置文件

    /**
     * <p>属性文件工具类
     *
     * @author xupeng
     * @date 2019/10/28 10:39
     */
    public class PropertyUtil {
    
        //加载property文件到io流里面
        public static Properties loadProperties(String fileName) {
            Properties properties = new Properties();
            try {
                InputStream is = PropertyUtil.class.getClassLoader().getResourceAsStream(fileName);
                properties.load(is);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return properties;
        }
    
        /**
         * 根据key值取得对应的value值
         *
         * @param key
         * @return
         */
        public static String getValue(String fileName, String key) {
            Properties properties = loadProperties(fileName);
            return properties.getProperty(key);
        }
    
    }
    View Code

    新建Jedis工具类,封装常用方法

    /**
     * <p>Jedis工具类
     *
     * @author xupeng
     * @date 2019/10/28 11:02
     */
    public class JedisUtil {
    
        private Logger logger = LoggerFactory.getLogger(JedisUtil.class);
    
        private static JedisPool jedisPool = null;
    
        private JedisUtil(){}
    
        static {
            Properties properties = PropertyUtil.loadProperties("redis.properties");
            String host = properties.getProperty("redis.host");
            String port = properties.getProperty("redis.port");
            String timeout = properties.getProperty("redis.timeout");
            String maxIdle = properties.getProperty("redis.maxIdle");
            String maxTotal = properties.getProperty("redis.maxTotal");
            String maxWaitMillis = properties.getProperty("redis.maxWaitMillis");
            String testOnBorrow = properties.getProperty("redis.testOnBorrow");
    
            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxIdle(Integer.parseInt(maxIdle));
            config.setMaxTotal(Integer.parseInt(maxTotal));
            config.setMaxWaitMillis(Long.parseLong(maxWaitMillis));
            config.setTestOnBorrow(Boolean.valueOf(testOnBorrow));
            jedisPool = new JedisPool(config, host, Integer.parseInt(port), Integer.parseInt(timeout));
        }
    
        /**
         * <p>从jedis连接池中获取获取jedis对象
         */
        private Jedis getJedis() {
            return jedisPool.getResource();
        }
    
        private static final JedisUtil jedisUtil = new JedisUtil();
    
        /**
         * <p>获取JedisUtil实例
         */
        public static JedisUtil getInstance() {
            return jedisUtil;
        }
    
        /**
         * <p>设置值
         * @param key 键
         * @param value 值
         */
        public String set(String key,String value){
            String status = null;
            Jedis jedis = null;
            try {
                jedis = getJedis();
                if (null != jedis){
                    status = jedis.set(key, value);
                }
            }catch (Exception e){
                logger.info("Unable to get connection from connection pool");
            }finally {
                if (null != jedis){
                    jedis.close();
                }
            }
            return status;
        }
    
        /**
         * <p>根据键名称获取值
         * @param key 键名称
         * @return*/
        public String get(String key){
            Jedis jedis = null;
            String value = null;
            try {
                jedis = getJedis();
                if (null != jedis){
                    value = jedis.get(key);
    
                }
            }catch (Exception e){
                logger.info("Unable to get connection from connection pool");
            }finally {
                if (null != jedis){
                    jedis.close();
                }
            }
            return value;
        }
    
        /**
         * <p>如果存在,不设置,返回0;不存在,进行设置,返回1。
         * @param key 键
         * @param value 值
         */
        public Long setnx(String key,String value){
            Long setnx = null;
            Jedis jedis = null;
            try {
                jedis = getJedis();
                if (null != jedis){
                    setnx = jedis.setnx(key, value);
                }
            }catch (Exception e){
                logger.info("Unable to get connection from connection pool");
            }finally {
                if (null != jedis){
                    jedis.close();
                }
            }
            return setnx;
        }
    
        /**
         * <p>设置key的有效时间
         * @param key 键
         * @param value 值
         */
        public String setex(String key,int seconds,String value){
            String setex = null;
            Jedis jedis = null;
            try {
                jedis = getJedis();
                if (null != jedis){
                    setex = jedis.setex(key, seconds, value);
                }
            }catch (Exception e){
                logger.info("Unable to get connection from connection pool");
            }finally {
                if (null != jedis){
                    jedis.close();
                }
            }
            return setex;
        }
    
        /**
         * <p>对某个值进行递增
         * @param key 键
         */
        public Long incr(String key){
            Long incr = null;
            Jedis jedis = null;
            try {
                jedis = getJedis();
                if (null != jedis){
                    incr = jedis.incr(key);
                }
            }catch (Exception e){
                logger.info("Unable to get connection from connection pool");
            }finally {
                if (null != jedis){
                    jedis.close();
                }
            }
            return incr;
        }
    
        /**
         * <p>对某个值进行递减
         * @param key 键
         */
        public Long decr(String key){
            Long incr = null;
            Jedis jedis = null;
            try {
                jedis = getJedis();
                if (null != jedis){
                    incr = jedis.decr(key);
                }
            }catch (Exception e){
                logger.info("Unable to get connection from connection pool");
            }finally {
                if (null != jedis){
                    jedis.close();
                }
            }
            return incr;
        }
    
        /**
         * <p>设置一个map类型的值
         *
         * @author zhuangxupeng
         * @date 2019/10/31 10:30
         */
        public String hmset(String key, Map<String,String> map){
            Jedis jedis = null;
            String hmset = null;
            try {
                jedis = getJedis();
                if (null != jedis){
                    hmset = jedis.hmset(key, map);
                }
            }catch (Exception e){
                logger.info("Unable to get connection from connection pool");
            }finally {
                if (null != jedis){
                    jedis.close();
                }
            }
            return hmset;
        }
    
        /**
         * <p>获取一个map类型的值
         *
         * @author zhuangxupeng
         * @date 2019/10/31 10:30
         */
        public Map<String, String> hgetAll(String key){
            Jedis jedis = null;
            Map<String, String> map = null;
            try {
                jedis = getJedis();
                if (null != jedis){
                    map = jedis.hgetAll(key);
                }
            }catch (Exception e){
                logger.info("Unable to get connection from connection pool");
            }finally {
                if (null != jedis){
                    jedis.close();
                }
            }
            return map;
        }
    
        /**
         * <p>获取key对应map的大小
         *
         * @author zhuangxupeng
         * @date 2019/10/31 10:30
         */
        public Long hlen(String key){
            Jedis jedis = null;
            Long hlen = null;
            try {
                jedis = getJedis();
                if (null != jedis){
                    hlen = jedis.hlen(key);
                }
            }catch (Exception e){
                logger.info("Unable to get connection from connection pool");
            }finally {
                if (null != jedis){
                    jedis.close();
                }
            }
            return hlen;
        }
    
        /**
         * <p>获取key对应map的所有的键的集合
         *
         * @author zhuangxupeng
         * @date 2019/10/31 10:30
         */
        public Set<String> hkeys(String key){
            Jedis jedis = null;
            Set<String> sets = null;
            try {
                jedis = getJedis();
                if (null != jedis){
                    sets = jedis.hkeys(key);
                }
            }catch (Exception e){
                logger.info("Unable to get connection from connection pool");
            }finally {
                if (null != jedis){
                    jedis.close();
                }
            }
            return sets;
        }
    
        /**
         * <p>获取key对应map的所有的值的集合
         *
         * @author zhuangxupeng
         * @date 2019/10/31 10:30
         */
        public List<String> hvals(String key){
            Jedis jedis = null;
            List<String> list = null;
            try {
                jedis = getJedis();
                if (null != jedis){
                    list = jedis.hvals(key);
    
                }
            }catch (Exception e){
                logger.info("Unable to get connection from connection pool");
            }finally {
                if (null != jedis){
                    jedis.close();
                }
            }
            return list;
        }
    
    
    
        /**
         * <p>删除
         *
         * @param key 键名称
         * @return del 删除成功返回1,失败返回0
         */
        public long del(String key) {
            Jedis jedis = null;
            Long del = null;
            try {
                jedis = getJedis();
                if (null != jedis){
                    del = jedis.del(key);
                }
            }catch (Exception e){
                logger.info("Unable to get connection from connection pool");
            }finally {
                if (null != jedis){
                    jedis.close();
                }
            }
            return del;
        }
    
        /**
         * <p>是否存在KEY
         * @param key 键
         */
        public boolean exists(String key) {
            Jedis jedis = null;
            Boolean exists = null;
            try {
                jedis = getJedis();
                if (null != jedis){
                    exists = jedis.exists(key);
                }
            }catch (Exception e){
                logger.info("Unable to get connection from connection pool");
            }finally {
                if (null != jedis){
                    jedis.close();
                }
            }
            return exists;
        }
    
        /**
         * <p>设置失效时间
         * @param key 键名称
         * @param seconds 秒数
         */
        public Long expire(String key, int seconds) {
            Jedis jedis = null;
            Long aLong = null;
            try {
                jedis = getJedis();
                if (null != jedis){
                    aLong = jedis.expire(key, seconds);
                }
            }catch (Exception e){
                logger.info("Unable to get connection from connection pool");
            }finally {
                if (null != jedis){
                    jedis.close();
                }
            }
            return aLong;
        }
    
        /**
         * 删除失效时间
         * @param key
         */
        public Long persist(String key) {
            Jedis jedis = null;
            Long persist  = null;
            try {
                jedis = getJedis();
                if (null != jedis){
                    persist = jedis.persist(key);
                }
            }catch (Exception e){
                logger.info("Unable to get connection from connection pool");
            }finally {
                if (null != jedis){
                    jedis.close();
                }
            }
            return persist;
        }
    
        /**
         * <p>添加sorted set
         * <p>已经存在的值,再次添加会失败。
         *
         * @param key 键名称
         * @param score 分数值
         * @param value 实际值
         * @return zadd 成功返回1,失败返回0。
         */
        public Long zadd(String key,double score,String value) {
            Jedis jedis = null;
            Long zadd = null;
            try {
                jedis = getJedis();
                zadd = jedis.zadd(key, score, value);
            }catch (Exception e){
                logger.info("Unable to get connection from connection pool");
            }finally {
                if (null != jedis){
                    jedis.close();
                }
            }
            return zadd;
        }
    
        /**
         * 返回指定下标的集合元素
         * @param key
         * @param start 0为第一个
         * @param end -1为最后一个
         * @return
         */
        public Set<String> zrange(String key, int start, int end) {
            Jedis jedis = null;
            Set<String> sets = null;
            try {
                jedis = getJedis();
                sets = jedis.zrange(key, start, end);
            }catch (Exception e){
                logger.info("Unable to get connection from connection pool");
            }finally {
                if (null != jedis){
                    jedis.close();
                }
            }
            return sets;
        }
    
    }
    View Code

    写一个main方法,来进行简单测试

    /**
     * <p>Jedis客户端操作redis的string数据类型
     * @author xupeng
     * @date 2019年10月28日
     */
    public class JedisStringDemo {
        public static void main(String[] args) {
    
            JedisUtil instance = JedisUtil.getInstance();
            instance.set("name", "zhuang");
    
            String getNameVal = instance.get("name");
            System.out.println("get name value:" + getNameVal);
    
        }
    }
    View Code
  • 相关阅读:
    杂题
    [ AtCoder Grand Contest 031] C
    [ AtCoder Regular Contest 107 ] C
    [ 实验舱 CSP/NOIP新赛制内部挑战赛4 ] 树上询问
    [ 2020牛客NOIP赛前集训营-提高组(第六场) ] 补题
    [NOI Online #2 提高组]子序列问题
    洛谷P4317 花神的数论题
    [AHOI2009]同类分布
    洛谷P3413 SAC#1
    数位dp小结
  • 原文地址:https://www.cnblogs.com/beanbag/p/11781298.html
Copyright © 2020-2023  润新知