package com.starry.common.redis; import java.util.Collection; import java.util.concurrent.TimeUnit; import javax.annotation.Resource; import org.springframework.dao.QueryTimeoutException; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Component; /** * @author rieds 工具类 * @since 2022/8/26 */ @Component public class RedisCache { @Resource public RedisTemplate redisTemplate; /** * 获得缓存的基本对象。 * * @param key * 缓存键值 * @return 缓存键值对应的数据 */ public T getCacheObject(final String key) { ValueOperations operations = redisTemplate.opsForValue(); try { return (T) operations.get(key); } catch (QueryTimeoutException e) { throw new RuntimeException("系统错误,通讯异常"); } } /** * 缓存基本的对象,Integer、String、实体类等 * * @param key * 缓存的键值 * @param value * 缓存的值 */ public void setCacheObject(final String key, final T value) { redisTemplate.opsForValue().set(key, value); } /** * 缓存基本的对象,Integer、String、实体类等 * * @param key * 缓存的键值 * @param value * 缓存的值 * @param timeout * 过期时间 * @param timeUnit * 时间颗粒度 */ public void setCacheObject(final String key, final T value, final Long timeout, final TimeUnit timeUnit) { redisTemplate.opsForValue().set(key, value, timeout, timeUnit); } /** * 删除单个对象 * * @param key */ public boolean deleteObject(final String key) { return redisTemplate.delete(key); } /** * 获得缓存的基本对象列表 * * @param pattern * 字符串前缀 * @return 对象列表 */ public Collection keys(final String pattern) { return redisTemplate.keys(pattern); } /** * 删除集合对象 * * @param collection * 多个对象 * @return */ public long deleteObject(final Collection collection) { return redisTemplate.delete(collection); } }