From 4e1bf4585280ab92147b543eaa3f477e7b99b894 Mon Sep 17 00:00:00 2001 From: stylefeng Date: Fri, 10 Jan 2025 16:41:38 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=908.3.3=E3=80=91=E3=80=90dict=E3=80=91?= =?UTF-8?q?=E3=80=90cache=E3=80=91=E5=88=9D=E5=A7=8B=E5=8C=96=E5=AD=97?= =?UTF-8?q?=E5=85=B8=E5=90=8D=E7=A7=B0=E7=9A=84=E7=BC=93=E5=AD=98=EF=BC=8C?= =?UTF-8?q?key=E4=B8=BA=E5=A4=8D=E6=A0=B8=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MixedDictNameMemoryCache.java | 28 +++++++++++++++++++ .../MixedDictNameRedisCache.java | 28 +++++++++++++++++++ .../modular/constants/DictCacheConstants.java | 9 ++++++ .../DictMemoryCacheAutoConfiguration.java | 17 +++++++++++ .../DictRedisCacheAutoConfiguration.java | 17 +++++++++++ 5 files changed, 99 insertions(+) create mode 100644 kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/cache/dictnamemixed/MixedDictNameMemoryCache.java create mode 100644 kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/cache/dictnamemixed/MixedDictNameRedisCache.java diff --git a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/cache/dictnamemixed/MixedDictNameMemoryCache.java b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/cache/dictnamemixed/MixedDictNameMemoryCache.java new file mode 100644 index 000000000..384c7f2ae --- /dev/null +++ b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/cache/dictnamemixed/MixedDictNameMemoryCache.java @@ -0,0 +1,28 @@ +package cn.stylefeng.roses.kernel.dict.modular.cache.dictnamemixed; + +import cn.hutool.cache.impl.TimedCache; +import cn.stylefeng.roses.kernel.cache.memory.AbstractMemoryCacheOperator; +import cn.stylefeng.roses.kernel.dict.modular.constants.DictCacheConstants; + +/** + * 字典名称的缓存 + *

+ * key是混合类型的,value是字典名称 + *

+ * key可能有两种,1. 字典类型id+字典编码 2. 字典类型编码+字典编码 + * + * @author fengshuonan + * @since 2025/1/10 16:33 + */ +public class MixedDictNameMemoryCache extends AbstractMemoryCacheOperator { + + public MixedDictNameMemoryCache(TimedCache timedCache) { + super(timedCache); + } + + @Override + public String getCommonKeyPrefix() { + return DictCacheConstants.DICT_MIXED_NAME_CACHE_PREFIX; + } + +} \ No newline at end of file diff --git a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/cache/dictnamemixed/MixedDictNameRedisCache.java b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/cache/dictnamemixed/MixedDictNameRedisCache.java new file mode 100644 index 000000000..de60c4a1b --- /dev/null +++ b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/cache/dictnamemixed/MixedDictNameRedisCache.java @@ -0,0 +1,28 @@ +package cn.stylefeng.roses.kernel.dict.modular.cache.dictnamemixed; + +import cn.stylefeng.roses.kernel.cache.redis.AbstractRedisCacheOperator; +import cn.stylefeng.roses.kernel.dict.modular.constants.DictCacheConstants; +import org.springframework.data.redis.core.RedisTemplate; + +/** + * 字典名称的缓存 + *

+ * key是混合类型的,value是字典名称 + *

+ * key可能有两种,1. 字典类型id+字典编码 2. 字典类型编码+字典编码 + * + * @author fengshuonan + * @since 2025/1/10 14:10 + */ +public class MixedDictNameRedisCache extends AbstractRedisCacheOperator { + + public MixedDictNameRedisCache(RedisTemplate redisTemplate) { + super(redisTemplate); + } + + @Override + public String getCommonKeyPrefix() { + return DictCacheConstants.DICT_MIXED_NAME_CACHE_PREFIX; + } + +} diff --git a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/constants/DictCacheConstants.java b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/constants/DictCacheConstants.java index cd3dbc22f..40b173b25 100644 --- a/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/constants/DictCacheConstants.java +++ b/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/constants/DictCacheConstants.java @@ -37,4 +37,13 @@ public interface DictCacheConstants { */ String DICT_INFO_CACHE_PREFIX = "DICT:INFO:"; + /** + * 字典名称的缓存 + *

+ * key是混合类型的,value是字典名称 + *

+ * key可能有两种,1. 字典类型id+字典编码 2. 字典类型编码+字典编码 + */ + String DICT_MIXED_NAME_CACHE_PREFIX = "DICT:MIXED:"; + } diff --git a/kernel-s-dict/dict-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/dict/starter/DictMemoryCacheAutoConfiguration.java b/kernel-s-dict/dict-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/dict/starter/DictMemoryCacheAutoConfiguration.java index 8cd646d8e..4eb21ab9a 100644 --- a/kernel-s-dict/dict-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/dict/starter/DictMemoryCacheAutoConfiguration.java +++ b/kernel-s-dict/dict-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/dict/starter/DictMemoryCacheAutoConfiguration.java @@ -29,6 +29,7 @@ import cn.hutool.cache.impl.TimedCache; import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi; import cn.stylefeng.roses.kernel.dict.api.pojo.DictDetail; import cn.stylefeng.roses.kernel.dict.modular.cache.dictname.DictInfoMemoryCache; +import cn.stylefeng.roses.kernel.dict.modular.cache.dictnamemixed.MixedDictNameMemoryCache; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -55,4 +56,20 @@ public class DictMemoryCacheAutoConfiguration { return new DictInfoMemoryCache(themeCache); } + /** + * 字典名称的缓存,混合类型的key + *

+ * key是混合类型的,value是字典名称 + *

+ * key可能有两种,1. 字典类型id+字典编码 2. 字典类型编码+字典编码 + * + * @author fengshuonan + * @since 2025/1/10 16:35 + */ + @Bean + public CacheOperatorApi dictNameMixedCache() { + TimedCache themeCache = CacheUtil.newTimedCache(1000 * 3600L); + return new MixedDictNameMemoryCache(themeCache); + } + } diff --git a/kernel-s-dict/dict-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/dict/starter/DictRedisCacheAutoConfiguration.java b/kernel-s-dict/dict-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/dict/starter/DictRedisCacheAutoConfiguration.java index b79a9cb88..2903ccf67 100644 --- a/kernel-s-dict/dict-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/dict/starter/DictRedisCacheAutoConfiguration.java +++ b/kernel-s-dict/dict-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/dict/starter/DictRedisCacheAutoConfiguration.java @@ -28,6 +28,7 @@ import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi; import cn.stylefeng.roses.kernel.cache.redis.util.CreateRedisTemplateUtil; import cn.stylefeng.roses.kernel.dict.api.pojo.DictDetail; import cn.stylefeng.roses.kernel.dict.modular.cache.dictname.DictInfoRedisCache; +import cn.stylefeng.roses.kernel.dict.modular.cache.dictnamemixed.MixedDictNameRedisCache; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -56,4 +57,20 @@ public class DictRedisCacheAutoConfiguration { return new DictInfoRedisCache(redisTemplate); } + /** + * 字典的Redis缓存 + *

+ * key是混合类型的,value是字典名称 + *

+ * key可能有两种,1. 字典类型id+字典编码 2. 字典类型编码+字典编码 + * + * @author fengshuonan + * @since 2025/1/10 15:05 + */ + @Bean + public CacheOperatorApi dictNameMixedCache(RedisConnectionFactory redisConnectionFactory) { + RedisTemplate redisTemplate = CreateRedisTemplateUtil.createObject(redisConnectionFactory); + return new MixedDictNameRedisCache(redisTemplate); + } + }