From e0ba2ba3c5f7ad3f289c6ad9278023d7f9e46f66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BF=83=E6=82=A6=E6=9D=8E=E5=9B=BD=E6=A5=A0?= <332435948@qq.com> Date: Fri, 3 Jul 2020 14:24:33 +0800 Subject: [PATCH] =?UTF-8?q?RedisCache=E4=B8=AD=E6=89=80=E6=9C=89=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E5=8F=82=E6=95=B0=E6=B7=BB=E5=8A=A0final=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96list=E5=8F=96=E5=87=BA=E6=95=88?= =?UTF-8?q?=E7=8E=87=EF=BC=8C=E6=B7=BB=E5=8A=A0=E5=85=B6=E5=AE=83=E5=B8=B8?= =?UTF-8?q?=E7=94=A8redis=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/redis/service/RedisService.java | 160 ++++++++++-------- 1 file changed, 90 insertions(+), 70 deletions(-) diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java index 8bea5da..6c702ea 100644 --- a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java +++ b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java @@ -1,17 +1,12 @@ package com.ruoyi.common.redis.service; -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 RedisService * * @param key 缓存的键值 * @param value 缓存的值 - * @return 缓存的对象 */ - public <T> ValueOperations<String, T> setCacheObject(String key, T value) + public <T> void setCacheObject(final String key, final T value) { - ValueOperations<String, T> operation = redisTemplate.opsForValue(); - operation.set(key, value); - return operation; + redisTemplate.opsForValue().set(key, value); } /** @@ -49,13 +41,35 @@ public class RedisService * @param value 缓存的值 * @param timeout 时间 * @param timeUnit 时间颗粒度 - * @return 缓存的对象 */ - public <T> ValueOperations<String, T> setCacheObject(String key, T value, Integer timeout, TimeUnit timeUnit) + public <T> void setCacheObject(final String key, final T value, final Integer timeout, final TimeUnit timeUnit) { - ValueOperations<String, T> 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 RedisService * @param key 缓存键值 * @return 缓存键值对应的数据 */ - public <T> T getCacheObject(String key) + public <T> T getCacheObject(final String key) { ValueOperations<String, T> operation = redisTemplate.opsForValue(); return operation.get(key); @@ -75,40 +89,33 @@ public class RedisService * * @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 <T> ListOperations<String, T> setCacheList(String key, List<T> dataList) + public <T> long setCacheList(final String key, final List<T> 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 RedisService * @param key 缓存的键值 * @return 缓存键值对应的数据 */ - public <T> List<T> getCacheList(String key) + public <T> List<T> getCacheList(final String key) { - List<T> dataList = new ArrayList<T>(); - ListOperations<String, T> 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 RedisService * @param dataSet 缓存的数据 * @return 缓存数据的对象 */ - public <T> BoundSetOperations<String, T> setCacheSet(String key, Set<T> dataSet) + public <T> long setCacheSet(final String key, final Set<T> dataSet) { - BoundSetOperations<String, T> setOperation = redisTemplate.boundSetOps(key); - Iterator<T> 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 RedisService * @param key * @return */ - public <T> Set<T> getCacheSet(String key) + public <T> Set<T> getCacheSet(final String key) { - Set<T> dataSet = new HashSet<T>(); - BoundSetOperations<String, T> operation = redisTemplate.boundSetOps(key); - dataSet = operation.members(); - return dataSet; + return redisTemplate.opsForSet().members(key); } /** @@ -167,19 +158,12 @@ public class RedisService * * @param key * @param dataMap - * @return */ - public <T> HashOperations<String, String, T> setCacheMap(String key, Map<String, T> dataMap) + public <T> void setCacheMap(final String key, final Map<String, T> dataMap) { - HashOperations hashOperations = redisTemplate.opsForHash(); - if (null != dataMap) - { - for (Map.Entry<String, T> 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 RedisService * @param key * @return */ - public <T> Map<String, T> getCacheMap(String key) + public <T> Map<String, T> getCacheMap(final String key) + { + return redisTemplate.opsForHash().entries(key); + } + + /** + * 往Hash中存入数据 + * + * @param key Redis键 + * @param hKey Hash键 + * @param value 值 + */ + public <T> 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> T getCacheMapValue(final String key, final String hKey) + { + HashOperations<String, String, T> opsForHash = redisTemplate.opsForHash(); + return opsForHash.get(key, hKey); + } + + /** + * 获取多个Hash中的数据 + * + * @param key Redis键 + * @param hKeys Hash键集合 + * @return Hash对象集合 + */ + public <T> List<T> getMultiCacheMapValue(final String key, final Collection<Object> hKeys) { - Map<String, T> map = redisTemplate.opsForHash().entries(key); - return map; + return redisTemplate.opsForHash().multiGet(key, hKeys); } /** @@ -200,7 +220,7 @@ public class RedisService * @param pattern 字符串前缀 * @return 对象列表 */ - public Collection<String> keys(String pattern) + public Collection<String> keys(final String pattern) { return redisTemplate.keys(pattern); }