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的