diff --git a/ruoyi/src/main/java/com/ruoyi/framework/redis/RedisCache.java b/ruoyi/src/main/java/com/ruoyi/framework/redis/RedisCache.java index 1fa3eda857..2905a3834d 100644 --- a/ruoyi/src/main/java/com/ruoyi/framework/redis/RedisCache.java +++ b/ruoyi/src/main/java/com/ruoyi/framework/redis/RedisCache.java @@ -1,17 +1,12 @@ package com.ruoyi.framework.redis; -import java.util.ArrayList; import java.util.Collection; -import java.util.HashSet; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.TimeUnit; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.BoundSetOperations; import org.springframework.data.redis.core.HashOperations; -import org.springframework.data.redis.core.ListOperations; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Component; @@ -33,13 +28,10 @@ public class RedisCache * * @param key 缓存的键值 * @param value 缓存的值 - * @return 缓存的对象 */ - public ValueOperations setCacheObject(String key, T value) + public void setCacheObject(final String key, final T value) { - ValueOperations operation = redisTemplate.opsForValue(); - operation.set(key, value); - return operation; + redisTemplate.opsForValue().set(key, value); } /** @@ -49,13 +41,35 @@ public class RedisCache * @param value 缓存的值 * @param timeout 时间 * @param timeUnit 时间颗粒度 - * @return 缓存的对象 */ - public ValueOperations setCacheObject(String key, T value, Integer timeout, TimeUnit timeUnit) + public void setCacheObject(final String key, final T value, final Integer timeout, final TimeUnit timeUnit) { - ValueOperations operation = redisTemplate.opsForValue(); - operation.set(key, value, timeout, timeUnit); - return operation; + redisTemplate.opsForValue().set(key, value, timeout, timeUnit); + } + + /** + * 设置有效时间 + * + * @param key Redis键 + * @param timeout 超时时间 + * @return true=设置成功;false=设置失败 + */ + public boolean expire(final String key, final long timeout) + { + return expire(key, timeout, TimeUnit.SECONDS); + } + + /** + * 设置有效时间 + * + * @param key Redis键 + * @param timeout 超时时间 + * @param unit 时间单位 + * @return true=设置成功;false=设置失败 + */ + public boolean expire(final String key, final long timeout, final TimeUnit unit) + { + return redisTemplate.expire(key, timeout, unit); } /** @@ -64,7 +78,7 @@ public class RedisCache * @param key 缓存键值 * @return 缓存键值对应的数据 */ - public T getCacheObject(String key) + public T getCacheObject(final String key) { ValueOperations operation = redisTemplate.opsForValue(); return operation.get(key); @@ -75,40 +89,33 @@ public class RedisCache * * @param key */ - public void deleteObject(String key) + public boolean deleteObject(final String key) { - redisTemplate.delete(key); + return redisTemplate.delete(key); } /** * 删除集合对象 * - * @param collection + * @param collection 多个对象 + * @return */ - public void deleteObject(Collection collection) + public long deleteObject(final Collection collection) { - redisTemplate.delete(collection); + return redisTemplate.delete(collection); } /** * 缓存List数据 * * @param key 缓存的键值 - * @param dataList 待缓存的List数据 + * @param values 待缓存的List数据 * @return 缓存的对象 */ - public ListOperations setCacheList(String key, List dataList) + public long setCacheList(final String key, final List dataList) { - ListOperations listOperation = redisTemplate.opsForList(); - if (null != dataList) - { - int size = dataList.size(); - for (int i = 0; i < size; i++) - { - listOperation.leftPush(key, dataList.get(i)); - } - } - return listOperation; + Long count = redisTemplate.opsForList().rightPushAll(key, dataList); + return count == null ? 0 : count; } /** @@ -117,17 +124,9 @@ public class RedisCache * @param key 缓存的键值 * @return 缓存键值对应的数据 */ - public List getCacheList(String key) + public List getCacheList(final String key) { - List dataList = new ArrayList(); - ListOperations listOperation = redisTemplate.opsForList(); - Long size = listOperation.size(key); - - for (int i = 0; i < size; i++) - { - dataList.add(listOperation.index(key, i)); - } - return dataList; + return redisTemplate.opsForList().range(key, 0, -1); } /** @@ -137,15 +136,10 @@ public class RedisCache * @param dataSet 缓存的数据 * @return 缓存数据的对象 */ - public BoundSetOperations setCacheSet(String key, Set dataSet) + public long setCacheSet(final String key, final Set dataSet) { - BoundSetOperations setOperation = redisTemplate.boundSetOps(key); - Iterator it = dataSet.iterator(); - while (it.hasNext()) - { - setOperation.add(it.next()); - } - return setOperation; + Long count = redisTemplate.opsForSet().add(key, dataSet); + return count == null ? 0 : count; } /** @@ -154,12 +148,9 @@ public class RedisCache * @param key * @return */ - public Set getCacheSet(String key) + public Set getCacheSet(final String key) { - Set dataSet = new HashSet(); - BoundSetOperations operation = redisTemplate.boundSetOps(key); - dataSet = operation.members(); - return dataSet; + return redisTemplate.opsForSet().members(key); } /** @@ -167,19 +158,12 @@ public class RedisCache * * @param key * @param dataMap - * @return */ - public HashOperations setCacheMap(String key, Map dataMap) + public void setCacheMap(final String key, final Map dataMap) { - HashOperations hashOperations = redisTemplate.opsForHash(); - if (null != dataMap) - { - for (Map.Entry entry : dataMap.entrySet()) - { - hashOperations.put(key, entry.getKey(), entry.getValue()); - } + if (dataMap != null) { + redisTemplate.opsForHash().putAll(key, dataMap); } - return hashOperations; } /** @@ -188,10 +172,46 @@ public class RedisCache * @param key * @return */ - public Map getCacheMap(String key) + public Map getCacheMap(final String key) { - Map map = redisTemplate.opsForHash().entries(key); - return map; + return redisTemplate.opsForHash().entries(key); + } + + /** + * 往Hash中存入数据 + * + * @param key Redis键 + * @param hKey Hash键 + * @param value 值 + */ + public void setCacheMapValue(final String key, final String hKey, final T value) + { + redisTemplate.opsForHash().put(key, hKey, value); + } + + /** + * 获取Hash中的数据 + * + * @param key Redis键 + * @param hKey Hash键 + * @return Hash中的对象 + */ + public T getCacheMapValue(final String key, final String hKey) + { + HashOperations opsForHash = redisTemplate.opsForHash(); + return opsForHash.get(key, hKey); + } + + /** + * 获取多个Hash中的数据 + * + * @param key Redis键 + * @param hKeys Hash键集合 + * @return Hash对象集合 + */ + public List getMultiCacheMapValue(final String key, final Collection hKeys) + { + return redisTemplate.opsForHash().multiGet(key, hKeys); } /** @@ -200,7 +220,7 @@ public class RedisCache * @param pattern 字符串前缀 * @return 对象列表 */ - public Collection keys(String pattern) + public Collection keys(final String pattern) { return redisTemplate.keys(pattern); }