RedisTemplate APi详解

import org.springframework.data.redis.core.RedisTemplate;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;


/**
 * 操作redis的工具类
 */
public class RedisUtil {

    /**
     * redis 字符串数据类型的工具类
     */
    public static class RedisStringUtil{
        /**
         * 设置string类型的值
         * @param key
         * @param value
         * @return
         */
        public static boolean set(RedisTemplate redisTemplate,String key,String value){
            try {
                redisTemplate.boundValueOps(key).set(value);
                return true;
            }catch (Exception e){
                e.printStackTrace();
                return false;
            }
        }

        /**
         * 获取String数据
         * @param redisTemplate
         * @param key
         * @param defaultValue
         * @return
         */
        public static String get(RedisTemplate redisTemplate,String key,String defaultValue){
            String retVal = null;
            try {
                retVal = redisTemplate.boundValueOps(key).get();
            } catch (Exception e) {
                e.printStackTrace();
                return defaultValue;
            }
            return retVal != null ? retVal : defaultValue;
        }

        /**
         * key不存在才设置
         * @param redisTemplate
         * @param key
         * @param value
         * @return
         */
        public static boolean setnx(RedisTemplate redisTemplate,String key,String value){
            try {
                return redisTemplate.boundValueOps(key).setIfAbsent(value);
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
        }

        /**
         * key存在才设置
         * @param redisTemplate
         * @param key
         * @param value
         * @return
         */
        public static boolean setxx(RedisTemplate redisTemplate,String key,String value){
            try {
                return redisTemplate.boundValueOps(key).setIfPresent(value);
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
        }

        /**
         * 设置过期时间
         * @param redisTemplate
         * @param time
         * @return
         */
        public static boolean setex(RedisTemplate redisTemplate, String key, int time, TimeUnit timeUnit){
            try {
                return redisTemplate.boundValueOps(key).expire(time, timeUnit);
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
        }

        /**
         * 对一个值增加指定的增加值
         * @param redisTemplate
         * @param key
         * @param increment
         * @return
         */
        public static Double increment(RedisTemplate redisTemplate, String key, double increment){
            try {
                return redisTemplate.boundValueOps(key).increment(increment);
            } catch (Exception e) {
                e.printStackTrace();
                return 0d;
            }
        }

        /**
         * 返回key下值的个数
         * @param redisTemplate
         * @param key
         * @return
         */
        public static Long size(RedisTemplate redisTemplate, String key){
            try {
                return redisTemplate.boundValueOps(key).size();
            } catch (Exception e) {
                e.printStackTrace();
                return 0l;
            }
        }

        /**
         * 给一个key值追加value
         * @param redisTemplate
         * @param key
         * @param value
         * @return 返回添加后字符串的长度
         */
        public static int appendStr(RedisTemplate redisTemplate, String key,String value){
            try {
                Integer append = redisTemplate.boundValueOps(key).append(value);
                return append;
            } catch (Exception e) {
                e.printStackTrace();
                return 0;
            }
        }

        /**
         * 获取指定位置的字符串 包含起始位置和结束位置的字符
         * 超出字符长度不报错,返回所有从起始位置到字符长度的值
         * @param redisTemplate
         * @param key
         * @param start
         * @param end
         * @return
         */
        public static String getRangeStr(RedisTemplate redisTemplate, String key,int start,int end){
            try {
                String s = redisTemplate.boundValueOps(key).get(start, end);
                return s;
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }


    }

    /**
     * redis hash数据类型的工具类
     */
    public static class RedisHashUtil{
        /**
         * 操作map对象
         * @param redisTemplate
         * @param key
         * @param mapValue
         * @return
         */
        public static boolean hsetMap(RedisTemplate redisTemplate, String key, Map mapValue){
            try {
                redisTemplate.boundHashOps(key).putAll(mapValue);
                return true;
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
        }
        /**
         * 设置单个值,数据类型为map类型
         * @param redisTemplate
         * @param key
         * @param hkey
         * @param hvalue
         * @return
         */
        public static boolean hset(RedisTemplate redisTemplate, String key,String hkey,String hvalue) {
            try{
                redisTemplate.boundHashOps(key).put(hkey,hvalue);
                return true;
            }catch (Exception e){
                e.printStackTrace();
                return false;
            }
        }

        /**
         * 根据key值获取数据类型为hash的值
         * @param redisTemplate
         * @param key
         * @param hkey
         * @return
         */
        public static Map hget(RedisTemplate redisTemplate,String key,String hkey){
            try{
                Object o = redisTemplate.boundHashOps(key).get(hkey);
                Map map = new HashMap<>();
                map.put(hkey,o);
                return map;
            }catch (Exception e){
                e.printStackTrace();
                return null;
            }
        }


    }

    /**
     * redis list数据类型的工具类
     */
    public static class RedisListUtil{

        public static Long lpush(RedisTemplate redisTemplate, String key, String value){
            try {
                Long index = redisTemplate.boundListOps(key).leftPush(value);
                return index;
            } catch (Exception e) {
                e.printStackTrace();
                return 0l;
            }
        }

        public static Long lpushDubleValue(RedisTemplate redisTemplate, String key, String value1,String value2){
            try {
                Long index = redisTemplate.boundListOps(key).leftPush(value1,value2);
                return index;
            } catch (Exception e) {
                e.printStackTrace();
                return 0l;
            }
        }

        public static Long lpushDubleValues(RedisTemplate redisTemplate, String key, String value1,String value2){
            try {
                Long index = redisTemplate.opsForList().leftPush(key, value1);
                return index;
            } catch (Exception e) {
                e.printStackTrace();
                return 0l;
            }
        }
    }

    /**
     * redis set数据类型的工具类
     */
    public static class RedisSetUtil{
        public void sss(RedisTemplate redisTemplate,String key){
        }
    }
}

 

你可能感兴趣的:(redis,redis)