【8.0】【cache】删除缓存增加一个接口

pull/57/head
fengshuonan 2023-07-14 18:34:57 +08:00
parent 8b37874ebf
commit 0dc628ad36
4 changed files with 36 additions and 0 deletions

View File

@ -85,6 +85,15 @@ public interface CacheOperatorApi<T> {
*/
void remove(String... key);
/**
*
*
* @param keys
* @author fengshuonan
* @since 2023/7/14 17:35
*/
void remove(Collection<String> keys);
/**
*
*

View File

@ -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<T> implements CacheOperatorApi
}
}
@Override
public void remove(Collection<String> 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);

View File

@ -69,6 +69,12 @@ public abstract class AbstractRedisCacheOperator<T> implements CacheOperatorApi<
redisTemplate.delete(withPrefixKeys);
}
@Override
public void remove(Collection<String> keys) {
List<String> 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);

View File

@ -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<T> implements CacheOperator
redisTemplate.boundHashOps(getCommonKeyPrefix()).delete(key);
}
@Override
public void remove(Collection<String> keys) {
if (ObjectUtil.isEmpty(keys)) {
return;
}
redisTemplate.boundHashOps(getCommonKeyPrefix()).delete(keys.toArray());
}
@Override
public void expire(String key, Long expiredSeconds) {
// 设置整个hash的