package com.sandu.ximon.admin.utils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.google.gson.Gson; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.*; import org.springframework.stereotype.Component; import java.util.List; import java.util.Set; import java.util.concurrent.TimeUnit; /** * Redis工具类 * * @author Mark sunlightcs@gmail.com */ @Component("RedisUtils") public class RedisUtils { @Autowired private RedisTemplate redisTemplate; @Autowired private ValueOperations valueOperations; private HashOperations hashOperations; private ListOperations listOperations; private SetOperations setOperations; private ZSetOperations zSetOperations; /** 默认过期时长,单位:秒 */ public final static long DEFAULT_EXPIRE = 60 * 60 * 24; /** 不设置过期时长 */ public final static long NOT_EXPIRE = -1; private final static Gson gson = new Gson(); /** * * @param key * @param value * @param expire 秒数 * @return */ public boolean set(String key, Object value, long expire){ valueOperations.set(key, toJson(value)); if(expire != NOT_EXPIRE){ return redisTemplate.expire(key, expire, TimeUnit.SECONDS); } return false; } public static RedisUtils getBean(){ return (RedisUtils)SpringContextUtils.getBean("RedisUtils"); } public boolean set(String key, Object value){ return set(key, value, DEFAULT_EXPIRE); } public T get(String key, Class clazz, long expire) { String value = valueOperations.get(key); if(expire != NOT_EXPIRE){ redisTemplate.expire(key, expire, TimeUnit.SECONDS); } return value == null ? null : fromJson(value, clazz); } public T get(String key, Class clazz) { return get(key, clazz, NOT_EXPIRE); } public String get(String key, long expire) { String value = valueOperations.get(key); if(expire != NOT_EXPIRE){ redisTemplate.expire(key, expire, TimeUnit.SECONDS); } return value; } public String get(String key) { return get(key, NOT_EXPIRE); } public boolean delete(String key) { return redisTemplate.delete(key); } public Set allKeys(){ return redisTemplate.keys("*"); } public Set keys(String str) { return redisTemplate.keys(str); } /** * Object转成JSON数据 */ private String toJson(Object object){ if(object instanceof Integer || object instanceof Long || object instanceof Float || object instanceof Double || object instanceof Boolean || object instanceof String){ return String.valueOf(object); } return gson.toJson(object); } /** * JSON数据,转成Object */ private T fromJson(String json, Class clazz){ return gson.fromJson(json, clazz); } public String listToJson(List list) { return JSON.toJSONString(list); } public List jsonToList(String json, Class clazz){ if(json.length() == 0) { return null; } JSONArray jsonArray = JSON.parseArray(json); return jsonArray.toJavaList(clazz); } }