redis工具类在java项目中调用redis的各种方法集合

写在前面
刚开始坚持写博客,习惯性的先在前面说几句。。
首先这边文章的受众一定是有一定redis基础的小伙伴才可以使用,我们在项目组想要操作redis,写好一个工具类就可以直接使用啦,当然我们也可以手写一个redis的连接池,后续我会写相关的文章分享大家
分析代码
好啦,,现在就先分享给大家相关的代码,这也是我在自己项目组使用的
工具类名称:
JedisUtil.java

package com.cn.zhangb.common.util;

import java.util.Set;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

/**
 * JedisUtil(推荐存Byte数组,存Json字符串效率更慢)
 * @author run926454
 * @date 2018/9/4 15:45
 */
@Component
public class JedisUtil {
     

    /**
     * 静态注入JedisPool连接池
     * 本来是正常注入JedisUtil,可以在Controller和Service层使用,但是重写Shiro的CustomCache无法注入JedisUtil
     * 现在改为静态注入JedisPool连接池,JedisUtil直接调用静态方法即可
     * https://blog.csdn.net/W_Z_W_888/article/details/79979103
     */
    private static JedisPool jedisPool;

    @Autowired
    public void setJedisPool(JedisPool jedisPool) {
     
        JedisUtil.jedisPool = jedisPool;
    }

    /**
     * 获取Jedis实例
     * @param 
     * @return redis.clients.jedis.Jedis
     * @author run926454
     * @date 2018/9/4 15:47
     */
    public static synchronized Jedis getJedis() {
     
        try {
     
            if (jedisPool != null) {
     
                return jedisPool.getResource();
            } else {
     
                return null;
            }
        } catch (Exception e) {
     
            throw new CustomException("获取Jedis资源异常:" + e.getMessage());
        }
    }

    /**
     * 释放Jedis资源
     * @param
     * @return void
     * @author run926454
     * @date 2018/9/5 9:16
     */
    public static void closePool() {
     
        try {
     
            jedisPool.close();
        } catch (Exception e) {
     
            throw new CustomException("释放Jedis资源异常:" + e.getMessage());
        }
    }

    /**
     * 获取redis键值-object
     * @param key
     * @return java.lang.Object
     * @author run926454
     * @date 2018/9/4 15:47
     */
    public static Object getObject(String key) {
     
        try (Jedis jedis = jedisPool.getResource()) {
     
            byte[] bytes = jedis.get(key.getBytes());
            if (StringUtil.isNotNull(bytes)) {
     
                return SerializableUtil.unserializable(bytes);
            }
        } catch (Exception e) {
     
            throw new CustomException("获取Redis键值getObject方法异常:key=" + key + " cause=" + e.getMessage());
        }
        return null;
    }

    /**
     * 设置redis键值-object
     * @param key
	 * @param value
     * @return java.lang.String
     * @author run926454
     * @date 2018/9/4 15:49
     */
    public static String setObject(String key, Object value) {
     
        try (Jedis jedis = jedisPool.getResource()) {
     
            return jedis.set(key.getBytes(), SerializableUtil.serializable(value));
        } catch (Exception e) {
     
            throw new CustomException("设置Redis键值setObject方法异常:key=" + key + " value=" + value + " cause=" + e.getMessage());
        }
    }

    /**
     * 设置redis键值-object-expiretime
     * @param key
	 * @param value
	 * @param expiretime
     * @return java.lang.String
     * @author run926454
     * @date 2018/9/4 15:50
     */
    public static String setObject(String key, Object value, int expiretime) {
     
        String result;
        try (Jedis jedis = jedisPool.getResource()) {
     
            result = jedis.set(key.getBytes(), SerializableUtil.serializable(value));
            if (Constant.OK.equals(result)) {
     
                jedis.expire(key.getBytes(), expiretime);
            }
            return result;
        } catch (Exception e) {
     
            throw new CustomException("设置Redis键值setObject方法异常:key=" + key + " value=" + value + " cause=" + e.getMessage());
        }
    }

    
    /**
     * 获取redis键值-object
     * @param key
     * @return java.lang.Object
     * @author run926454
     * @date 2018/9/4 15:47
     */
    public static String getString(String key) {
     
        try  {
     
           return getObject(key) == null ? "" : getObject(key).toString();
        } catch (Exception e) {
     
            throw new CustomException("获取Redis键值getObject方法异常:key=" + key + " cause=" + e.getMessage());
        }
    }

    /**
     * 获取redis键值-Json
     * @param key
     * @return java.lang.Object
     * @author run926454
     * @date 2018/9/4 15:47
     */
    public static String getJson(String key) {
     
        try (Jedis jedis = jedisPool.getResource()) {
     
            return jedis.get(key);
        } catch (Exception e) {
     
            throw new CustomException("获取Redis键值getJson方法异常:key=" + key + " cause=" + e.getMessage());
        }
    }

    /**
     * 设置redis键值-Json
     * @param key
     * @param value
     * @return java.lang.String
     * @author run926454
     * @date 2018/9/4 15:49
     */
    public static String setJson(String key, String value) {
     
        try (Jedis jedis = jedisPool.getResource()) {
     
            return jedis.set(key, value);
        } catch (Exception e) {
     
            throw new CustomException("设置Redis键值setJson方法异常:key=" + key + " value=" + value + " cause=" + e.getMessage());
        }
    }

    /**
     * 设置redis键值-Json-expiretime
     * @param key
     * @param value
     * @param expiretime
     * @return java.lang.String
     * @author run926454
     * @date 2018/9/4 15:50
     */
    public static String setJson(String key, String value, int expiretime) {
     
        String result;
        try (Jedis jedis = jedisPool.getResource()) {
     
            result = jedis.set(key, value);
            if (Constant.OK.equals(result)) {
     
                jedis.expire(key, expiretime);
            }
            return result;
        } catch (Exception e) {
     
            throw new CustomException("设置Redis键值setJson方法异常:key=" + key + " value=" + value + " cause=" + e.getMessage());
        }
    }

    /**
     * 删除key
     * @param key
     * @return java.lang.Long
     * @author run926454
     * @date 2018/9/4 15:50
     */
    public static Long delKey(String key) {
     
        try (Jedis jedis = jedisPool.getResource()) {
     
            return jedis.del(key.getBytes());
        } catch (Exception e) {
     
            throw new CustomException("删除Redis的键delKey方法异常:key=" + key + " cause=" + e.getMessage());
        }
    }

    /**
     * key是否存在
     * @param key
     * @return java.lang.Boolean
     * @author run926454
     * @date 2018/9/4 15:51
     */
    public static Boolean exists(String key) {
     
        try (Jedis jedis = jedisPool.getResource()) {
     
            return jedis.exists(key.getBytes());
        } catch (Exception e) {
     
            throw new CustomException("查询Redis的键是否存在exists方法异常:key=" + key + " cause=" + e.getMessage());
        }
    }

    /**
     * 模糊查询获取key集合(keys的速度非常快,但在一个大的数据库中使用它仍然可能造成性能问题,生产不推荐使用)
     * @param key
     * @return java.util.Set
     * @author run926454
     * @date 2018/9/6 9:43
     */
    public static Set<String> keysS(String key) {
     
        try (Jedis jedis = jedisPool.getResource()) {
     
            return jedis.keys(key);
        } catch (Exception e) {
     
            throw new CustomException("模糊查询Redis的键集合keysS方法异常:key=" + key + " cause=" + e.getMessage());
        }
    }

    /**
     * 模糊查询获取key集合(keys的速度非常快,但在一个大的数据库中使用它仍然可能造成性能问题,生产不推荐使用)
     * @param key
     * @return java.util.Set
     * @author run926454
     * @date 2018/9/6 9:43
     */
    public static Set<byte[]> keysB(String key) {
     
        try (Jedis jedis = jedisPool.getResource()) {
     
            return jedis.keys(key.getBytes());
        } catch (Exception e) {
     
            throw new CustomException("模糊查询Redis的键集合keysB方法异常:key=" + key + " cause=" + e.getMessage());
        }
    }

    /**
     * 获取过期剩余时间
     * @param key
     * @return java.lang.String
     * @author run926454
     * @date 2018/9/11 16:26
     */
    public static Long ttl(String key) {
     
        Long result = -2L;
        try (Jedis jedis = jedisPool.getResource()) {
     
            result = jedis.ttl(key);
            return result;
        } catch (Exception e) {
     
            throw new CustomException("获取Redis键过期剩余时间ttl方法异常:key=" + key + " cause=" + e.getMessage());
        }
    }
}

呃呃呃。。代码很长,都有相对应的备注哈,详细普通的程序猿都可以看得懂。
下面在列举一个使用方法:

		 //通过redis查询该ID
		 String redisToken = JedisUtil.getString(id);

怎么样,很简单吧,我们只需要调用util工具类,即可使用里面的静态方法。

你可能感兴趣的:(JAVA基础和应用,redis,java,jedis)