Redis教程

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

本文主要是介绍封装redis工具类 实现快速存取值,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

下面是封装好的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;

    }
}
这篇关于封装redis工具类 实现快速存取值的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!