From 051fd6342eaf9061820d8ca446b37892943dd756 Mon Sep 17 00:00:00 2001
From: xiongxiaoyang <773861846@qq.com>
Date: Thu, 12 May 2022 11:15:37 +0800
Subject: [PATCH] =?UTF-8?q?build(cache):=20=E9=9B=86=E6=88=90=E9=85=8D?=
=?UTF-8?q?=E7=BD=AE=20caffeine=20=E6=9C=AC=E5=9C=B0=E7=BC=93=E5=AD=98?=
=?UTF-8?q?=E5=92=8C=20redis=20=E8=BF=9C=E7=A8=8B=E7=BC=93=E5=AD=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 14 +++
.../core/common/constant/CommonConsts.java | 16 ++++
.../novel/core/config/CacheConfig.java | 83 ++++++++++++++++
.../novel/core/constant/CacheConsts.java | 94 +++++++++++++++++++
.../core/constant/SystemConfigConsts.java | 10 ++
src/main/resources/application.yml | 7 ++
6 files changed, 224 insertions(+)
create mode 100644 src/main/java/io/github/xxyopen/novel/core/common/constant/CommonConsts.java
create mode 100644 src/main/java/io/github/xxyopen/novel/core/config/CacheConfig.java
create mode 100644 src/main/java/io/github/xxyopen/novel/core/constant/CacheConsts.java
create mode 100644 src/main/java/io/github/xxyopen/novel/core/constant/SystemConfigConsts.java
diff --git a/pom.xml b/pom.xml
index 7049195..ee65be1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -58,6 +58,20 @@
test
+
+
+ org.springframework.boot
+ spring-boot-starter-cache
+
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+
+
+ com.github.ben-manes.caffeine
+ caffeine
+
+
org.springframework.boot
spring-boot-devtools
diff --git a/src/main/java/io/github/xxyopen/novel/core/common/constant/CommonConsts.java b/src/main/java/io/github/xxyopen/novel/core/common/constant/CommonConsts.java
new file mode 100644
index 0000000..1909516
--- /dev/null
+++ b/src/main/java/io/github/xxyopen/novel/core/common/constant/CommonConsts.java
@@ -0,0 +1,16 @@
+package io.github.xxyopen.novel.core.common.constant;
+
+/**
+ * 通用常量
+ *
+ * @author xiongxiaoyang
+ * @date 2022/5/12
+ */
+public class CommonConsts {
+
+ private CommonConsts(){}
+
+ public static final String YES = "yes";
+
+ public static final String NO = "no";
+}
diff --git a/src/main/java/io/github/xxyopen/novel/core/config/CacheConfig.java b/src/main/java/io/github/xxyopen/novel/core/config/CacheConfig.java
new file mode 100644
index 0000000..8a13fbe
--- /dev/null
+++ b/src/main/java/io/github/xxyopen/novel/core/config/CacheConfig.java
@@ -0,0 +1,83 @@
+package io.github.xxyopen.novel.core.config;
+
+import com.github.benmanes.caffeine.cache.Caffeine;
+import io.github.xxyopen.novel.core.constant.CacheConsts;
+import org.springframework.cache.CacheManager;
+import org.springframework.cache.caffeine.CaffeineCache;
+import org.springframework.cache.support.SimpleCacheManager;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.data.redis.cache.RedisCacheConfiguration;
+import org.springframework.data.redis.cache.RedisCacheManager;
+import org.springframework.data.redis.cache.RedisCacheWriter;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+
+import java.time.Duration;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 缓存配置类
+ *
+ * @author xiongxiaoyang
+ * @date 2022/5/12
+ */
+@Configuration
+public class CacheConfig {
+
+ /**
+ * Caffeine 缓存管理器
+ */
+ @Bean
+ @Primary
+ public CacheManager caffeineCacheManager() {
+ SimpleCacheManager cacheManager = new SimpleCacheManager();
+
+ List caches = new ArrayList<>(CacheConsts.CacheEnum.values().length);
+ for (CacheConsts.CacheEnum c : CacheConsts.CacheEnum.values()) {
+ if (c.isLocal()) {
+ Caffeine