From 0dc628ad36dde1f2d163b373838cd11a9bf26ba9 Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Fri, 14 Jul 2023 18:34:57 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=908.0=E3=80=91=E3=80=90cache=E3=80=91?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E7=BC=93=E5=AD=98=E5=A2=9E=E5=8A=A0=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../roses/kernel/cache/api/CacheOperatorApi.java | 9 +++++++++ .../cache/memory/AbstractMemoryCacheOperator.java | 12 ++++++++++++ .../cache/redis/AbstractRedisCacheOperator.java | 6 ++++++ .../cache/redis/AbstractRedisHashCacheOperator.java | 9 +++++++++ 4 files changed, 36 insertions(+) diff --git a/kernel-d-cache/cache-api/src/main/java/cn/stylefeng/roses/kernel/cache/api/CacheOperatorApi.java b/kernel-d-cache/cache-api/src/main/java/cn/stylefeng/roses/kernel/cache/api/CacheOperatorApi.java index 664b772ad..e865ab229 100644 --- a/kernel-d-cache/cache-api/src/main/java/cn/stylefeng/roses/kernel/cache/api/CacheOperatorApi.java +++ b/kernel-d-cache/cache-api/src/main/java/cn/stylefeng/roses/kernel/cache/api/CacheOperatorApi.java @@ -85,6 +85,15 @@ public interface CacheOperatorApi { */ void remove(String... key); + /** + * 删除缓存 + * + * @param keys 多个键集合 + * @author fengshuonan + * @since 2023/7/14 17:35 + */ + void remove(Collection keys); + /** * 删除缓存 * diff --git a/kernel-d-cache/cache-sdk-memory/src/main/java/cn/stylefeng/roses/kernel/cache/memory/AbstractMemoryCacheOperator.java b/kernel-d-cache/cache-sdk-memory/src/main/java/cn/stylefeng/roses/kernel/cache/memory/AbstractMemoryCacheOperator.java index ee67957f7..2850a01a4 100644 --- a/kernel-d-cache/cache-sdk-memory/src/main/java/cn/stylefeng/roses/kernel/cache/memory/AbstractMemoryCacheOperator.java +++ b/kernel-d-cache/cache-sdk-memory/src/main/java/cn/stylefeng/roses/kernel/cache/memory/AbstractMemoryCacheOperator.java @@ -28,6 +28,7 @@ import cn.hutool.cache.impl.CacheObj; import cn.hutool.cache.impl.TimedCache; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.ObjectUtil; import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi; import java.util.*; @@ -71,6 +72,17 @@ public abstract class AbstractMemoryCacheOperator implements CacheOperatorApi } } + @Override + public void remove(Collection keys) { + if (ObjectUtil.isEmpty(keys)) { + return; + } + + for (String key : keys) { + timedCache.remove(calcKey(key)); + } + } + @Override public void expire(String key, Long expiredSeconds) { T value = timedCache.get(calcKey(key), true); diff --git a/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/AbstractRedisCacheOperator.java b/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/AbstractRedisCacheOperator.java index 3f7bd7f14..ea6681624 100644 --- a/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/AbstractRedisCacheOperator.java +++ b/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/AbstractRedisCacheOperator.java @@ -69,6 +69,12 @@ public abstract class AbstractRedisCacheOperator implements CacheOperatorApi< redisTemplate.delete(withPrefixKeys); } + @Override + public void remove(Collection keys) { + List withPrefixKeys = keys.stream().map(this::calcKey).collect(Collectors.toList()); + redisTemplate.delete(withPrefixKeys); + } + @Override public void expire(String key, Long expiredSeconds) { redisTemplate.boundValueOps(calcKey(key)).expire(expiredSeconds, TimeUnit.SECONDS); diff --git a/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/AbstractRedisHashCacheOperator.java b/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/AbstractRedisHashCacheOperator.java index 063d8db6b..99abf99ba 100644 --- a/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/AbstractRedisHashCacheOperator.java +++ b/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/AbstractRedisHashCacheOperator.java @@ -26,6 +26,7 @@ package cn.stylefeng.roses.kernel.cache.redis; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.ObjectUtil; import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi; import org.springframework.data.redis.core.RedisTemplate; @@ -70,6 +71,14 @@ public abstract class AbstractRedisHashCacheOperator implements CacheOperator redisTemplate.boundHashOps(getCommonKeyPrefix()).delete(key); } + @Override + public void remove(Collection keys) { + if (ObjectUtil.isEmpty(keys)) { + return; + } + redisTemplate.boundHashOps(getCommonKeyPrefix()).delete(keys.toArray()); + } + @Override public void expire(String key, Long expiredSeconds) { // 设置整个hash的