mirror of https://gitee.com/stylefeng/roses
【cache】增加一个缓存过期接口,增加fastjson用的redis序列化器
parent
683e506db9
commit
c6bd3aebdf
|
@ -53,6 +53,15 @@ public interface CacheOperatorApi<T> {
|
||||||
*/
|
*/
|
||||||
void remove(String... key);
|
void remove(String... key);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除缓存
|
||||||
|
*
|
||||||
|
* @param key 键,多个
|
||||||
|
* @author stylefeng
|
||||||
|
* @date 2020/7/8 22:09
|
||||||
|
*/
|
||||||
|
void expire(String key, Long expiredSeconds);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 判断某个key值是否存在于缓存
|
* 判断某个key值是否存在于缓存
|
||||||
*
|
*
|
||||||
|
|
|
@ -23,4 +23,9 @@ public interface CacheConstants {
|
||||||
*/
|
*/
|
||||||
String CACHE_DELIMITER = ":";
|
String CACHE_DELIMITER = ":";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 给hutool缓存用的无限过期时间
|
||||||
|
*/
|
||||||
|
Long NONE_EXPIRED_TIME = 1000L * 3600 * 24 * 999;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,6 +47,12 @@ public abstract class AbstractMemoryCacheOperator<T> implements CacheOperatorApi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void expire(String key, Long expiredSeconds) {
|
||||||
|
T value = this.get(getCommonKeyPrefix() + key);
|
||||||
|
timedCache.put(getCommonKeyPrefix() + key, value, expiredSeconds * 1000);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean contains(String key) {
|
public boolean contains(String key) {
|
||||||
return timedCache.containsKey(key);
|
return timedCache.containsKey(key);
|
||||||
|
|
|
@ -46,6 +46,11 @@ public abstract class AbstractRedisCacheOperator<T> implements CacheOperatorApi<
|
||||||
redisTemplate.delete(withPrefixKeys);
|
redisTemplate.delete(withPrefixKeys);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void expire(String key, Long expiredSeconds) {
|
||||||
|
redisTemplate.boundValueOps(getCommonKeyPrefix() + key).expire(expiredSeconds, TimeUnit.SECONDS);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean contains(String key) {
|
public boolean contains(String key) {
|
||||||
T value = redisTemplate.boundValueOps(getCommonKeyPrefix() + key).get();
|
T value = redisTemplate.boundValueOps(getCommonKeyPrefix() + key).get();
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
package cn.stylefeng.roses.kernel.cache.serializer;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.parser.Feature;
|
||||||
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
||||||
|
import org.springframework.data.redis.serializer.RedisSerializer;
|
||||||
|
import org.springframework.data.redis.serializer.SerializationException;
|
||||||
|
|
||||||
|
import java.nio.charset.Charset;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fastjson redis序列化器
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @date 2017/11/7 上午9:20
|
||||||
|
*/
|
||||||
|
public class FastJson2JsonRedisSerializer<T> implements RedisSerializer<T> {
|
||||||
|
|
||||||
|
public static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;
|
||||||
|
|
||||||
|
private final Class<T> clazz;
|
||||||
|
|
||||||
|
public FastJson2JsonRedisSerializer(Class<T> clazz) {
|
||||||
|
super();
|
||||||
|
this.clazz = clazz;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public byte[] serialize(T object) throws SerializationException {
|
||||||
|
if (object == null) {
|
||||||
|
return new byte[0];
|
||||||
|
}
|
||||||
|
return JSON.toJSONString(object, SerializerFeature.WriteClassName).getBytes(DEFAULT_CHARSET);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T deserialize(byte[] bytes) throws SerializationException {
|
||||||
|
if (bytes == null || bytes.length <= 0) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
String str = new String(bytes, DEFAULT_CHARSET);
|
||||||
|
|
||||||
|
return JSON.parseObject(str, clazz, Feature.SupportAutoType);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -15,6 +15,8 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
import static cn.stylefeng.roses.kernel.cache.api.constants.CacheConstants.NONE_EXPIRED_TIME;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 校验器自动配置
|
* 校验器自动配置
|
||||||
*
|
*
|
||||||
|
@ -33,7 +35,7 @@ public class ValidatorAutoConfiguration {
|
||||||
@Bean
|
@Bean
|
||||||
@ConditionalOnMissingBean(BlackListApi.class)
|
@ConditionalOnMissingBean(BlackListApi.class)
|
||||||
public BlackListApi blackListApi() {
|
public BlackListApi blackListApi() {
|
||||||
TimedCache<String, String> timedCache = CacheUtil.newTimedCache(1000L * 3600 * 24 * 999);
|
TimedCache<String, String> timedCache = CacheUtil.newTimedCache(NONE_EXPIRED_TIME);
|
||||||
BlackListMemoryCache blackListMemoryCache = new BlackListMemoryCache(timedCache);
|
BlackListMemoryCache blackListMemoryCache = new BlackListMemoryCache(timedCache);
|
||||||
return new BlackListService(blackListMemoryCache);
|
return new BlackListService(blackListMemoryCache);
|
||||||
}
|
}
|
||||||
|
@ -47,7 +49,7 @@ public class ValidatorAutoConfiguration {
|
||||||
@Bean
|
@Bean
|
||||||
@ConditionalOnMissingBean(CountValidatorApi.class)
|
@ConditionalOnMissingBean(CountValidatorApi.class)
|
||||||
public CountValidatorApi countValidatorApi() {
|
public CountValidatorApi countValidatorApi() {
|
||||||
TimedCache<String, Long> timedCache = CacheUtil.newTimedCache(1000L * 3600 * 24 * 999);
|
TimedCache<String, Long> timedCache = CacheUtil.newTimedCache(NONE_EXPIRED_TIME);
|
||||||
DefaultCountValidateCache defaultCountValidateCache = new DefaultCountValidateCache(timedCache);
|
DefaultCountValidateCache defaultCountValidateCache = new DefaultCountValidateCache(timedCache);
|
||||||
return new DefaultCountValidator(defaultCountValidateCache);
|
return new DefaultCountValidator(defaultCountValidateCache);
|
||||||
}
|
}
|
||||||
|
@ -61,7 +63,7 @@ public class ValidatorAutoConfiguration {
|
||||||
@Bean
|
@Bean
|
||||||
@ConditionalOnMissingBean(WhiteListApi.class)
|
@ConditionalOnMissingBean(WhiteListApi.class)
|
||||||
public WhiteListApi whiteListApi() {
|
public WhiteListApi whiteListApi() {
|
||||||
TimedCache<String, String> timedCache = CacheUtil.newTimedCache(1000L * 3600 * 24 * 999);
|
TimedCache<String, String> timedCache = CacheUtil.newTimedCache(NONE_EXPIRED_TIME);
|
||||||
WhiteListMemoryCache whiteListMemoryCache = new WhiteListMemoryCache(timedCache);
|
WhiteListMemoryCache whiteListMemoryCache = new WhiteListMemoryCache(timedCache);
|
||||||
return new WhiteListService(whiteListMemoryCache);
|
return new WhiteListService(whiteListMemoryCache);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue