ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

封装redis工具类 实现快速存取值

2021-10-05 01:03:06  阅读:125  来源: 互联网

标签:封装 String redis key import return 存取 public


下面是封装好的redis工具类

保存位置

com 
D javasm 
common 
async 
cache 
CacheServtce 
JsonUtils 
Keyutils

 

1 reids工具类

这个类封装的是redis,直接使用这个类的方法向reids中存取值,设置过期时间

import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;

import java.util.concurrent.TimeUnit;

@Component
@RequiredArgsConstructor
public class CacheService {
    /**
     * redis工具类
     */

    //获得默认StringRedisTemplate
    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    //设置默认事件
    public static final long defaultTime = 2;


    /**
     * 存入redis 设置默认有效时间的缓存
     */
    public void setCacheWithDefaultTime(String key, String value) {
        stringRedisTemplate.opsForValue().set(key, value, defaultTime, TimeUnit.MINUTES);

    }

    /**
     * 存入redis 设置自定义有效时间的缓存
     */
    public void setCacheWithCustomerTime(String key, String value, long minute) {
        stringRedisTemplate.opsForValue().set(key, value, minute, TimeUnit.MINUTES);

    }

    /**
     * 设置无效时间的缓存
     * 存入redis
     */
    public void setCache(String key, String value) {
        stringRedisTemplate.opsForValue().set(key, value);

    }

    /**
     * 判断redis是否存在
     */
    public boolean exitsKey(String key) {
        return stringRedisTemplate.hasKey(key);
    }

    /**
     * 获得redis
     */
    public String getCache(String key) {
        if (exitsKey(key)) {

            return stringRedisTemplate.opsForValue().get(key);
        }
        return "";
    }

    /**
     * 清除redis
     */
    public void clearCache(String key) {
        stringRedisTemplate.delete(key);
    }

}

2 Json 转换类

上面封装的redis工具类存入的key-value都是str,实际使用时

存——要将后端的各种数据类型(主要是单个obj以及各种集合)转为str

取——将value转回原来的数据类型

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.type.CollectionLikeType;

import java.util.List;

/**'
 * Json 转换类
 */
public class JsonUtils {

    static ObjectMapper objectMapper=new ObjectMapper();

    /**
     * 对象转字符串
     */
    public static String obj2Str(Object obj) {

        try {
            String s = objectMapper.writeValueAsString(obj);
            return s;
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return "";

    }


    /**
     * 字符串转对象
     */
    public static <T> T str2Obj(String str, Class<T> clazz) {

        try {
            T t = objectMapper.readValue(str, clazz);
            return t;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 字符串转换集合
     */

    public static <T> List<T> str2List(String str, Class<T> clazz){
        CollectionLikeType collectionLikeType = objectMapper.getTypeFactory().constructCollectionLikeType(List.class, clazz);
        try {
            List<T> list = objectMapper.readValue(str, collectionLikeType);
            return list;
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return null;

    }
}

标签:封装,String,redis,key,import,return,存取,public
来源: https://www.cnblogs.com/BRSblackshoot/p/15367739.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有