RedisTemplate APi详解

本文详细剖析了RedisTemplate API的使用,包括数据存取、事务处理、键操作等多个方面,帮助开发者更好地掌握RedisTemplate在实际项目中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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<String,String> 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<String,String> 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<String,String> 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<String,String> 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<String,String> 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<String,String> 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<String,String> 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<String,String> 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<String,String> 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<String,String> redisTemplate, String key, Map<String,Object> 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<String,String> 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<String,Object> hget(RedisTemplate<String,String> redisTemplate,String key,String hkey){
            try{
                Object o = redisTemplate.boundHashOps(key).get(hkey);
                Map<String,Object> 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<String,String> 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<String,String> 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<String,String> 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<String,String> redisTemplate,String key){
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值