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.concurrent.TimeUnit; /** * Redis工具类 */ @Component public class RedisUtils { @Autowired private RedisTemplate<String, Object> redisTemplate; /** * 默认过期时长,单位:秒 */ public final static long DEFAULT_EXPIRE = 60 * 60 * 24; /** * 不设置过期时长 */ public final static long NOT_EXPIRE = -1; /** * 获取list操作接口 * @return */ public ListOperations<String, Object> listOperations() { return redisTemplate.opsForList(); } /** * 获取hash操作接口 * @return */ public HashOperations<String, String, Object> hashOperations() { return redisTemplate.opsForHash(); } /** * 获取zSet操作接口 * @return */ public ZSetOperations<String, Object> zSetOperations() { return redisTemplate.opsForZSet(); } /** * 获取set操作接口 * @return */ public SetOperations<String, Object> setOperations() { return redisTemplate.opsForSet(); } public void set(String key, Object value, long expire) { redisTemplate.opsForValue().set(key, toJson(value)); if (expire != NOT_EXPIRE) { redisTemplate.expire(key, expire, TimeUnit.SECONDS); } } public void set(String key, Object value) { set(key, value, DEFAULT_EXPIRE); } public <T> T get(String key, Class<T> clazz, long expire) { String value = redisTemplate.opsForValue().get(key).toString(); if (expire != NOT_EXPIRE) { redisTemplate.expire(key, expire, TimeUnit.SECONDS); } return value == null ? null : fromJson(value, clazz); } public <T> T get(String key, Class<T> clazz) { return get(key, clazz, NOT_EXPIRE); } public String get(String key, long expire) { String value = redisTemplate.opsForValue().get(key).toString(); if (expire != NOT_EXPIRE) { redisTemplate.expire(key, expire, TimeUnit.SECONDS); } return value; } public String get(String key) { return get(key, NOT_EXPIRE); } public void delete(String key) { redisTemplate.delete(key); } /** * 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 new Gson().toJson(object); } /** * JSON数据,转成Object */ private <T> T fromJson(String json, Class<T> clazz) { return new Gson().fromJson(json, clazz); } }
Redis工具类
最新推荐文章于 2024-08-21 22:38:14 发布