From b0c7bf5751c391eb8969345568b05a10fdde4d78 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=86=B0=E7=82=B9?= <2374212111@qq.com>
Date: Mon, 17 Jun 2024 14:40:06 +0800
Subject: [PATCH] =?UTF-8?q?[feat]=203.0.0=E7=89=88=E6=9C=AC=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=20redis=20=E5=A4=9A=E6=95=B0=E6=8D=AE=E6=BA=90?=
=?UTF-8?q?=E6=8F=92=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../magic-api-plugin-dynamic-redis/pom.xml | 25 ++
.../redis/MagicDynamicRedisAutoConfig.java | 76 ++++
.../redis/MagicRedisConfiguration.java | 50 +++
.../magicapi/redis/MagicRedisProperties.java | 130 ++++++
.../magicapi/redis/RedisConnectionType.java | 59 +++
.../magicapi/redis/RedisConstant.java | 20 +
.../magicapi/redis/RedisDynamicModule.java | 146 +++++++
.../magicapi/redis/RedisInstanceFactory.java | 396 ++++++++++++++++++
.../magicapi/redis/RedisResource.java | 122 ++++++
.../main/resources/META-INF/spring.factories | 1 +
...ot.autoconfigure.AutoConfiguration.imports | 1 +
11 files changed, 1026 insertions(+)
create mode 100644 magic-api-plugins/magic-api-plugin-dynamic-redis/pom.xml
create mode 100644 magic-api-plugins/magic-api-plugin-dynamic-redis/src/main/java/org/ssssssss/magicapi/redis/MagicDynamicRedisAutoConfig.java
create mode 100644 magic-api-plugins/magic-api-plugin-dynamic-redis/src/main/java/org/ssssssss/magicapi/redis/MagicRedisConfiguration.java
create mode 100644 magic-api-plugins/magic-api-plugin-dynamic-redis/src/main/java/org/ssssssss/magicapi/redis/MagicRedisProperties.java
create mode 100644 magic-api-plugins/magic-api-plugin-dynamic-redis/src/main/java/org/ssssssss/magicapi/redis/RedisConnectionType.java
create mode 100644 magic-api-plugins/magic-api-plugin-dynamic-redis/src/main/java/org/ssssssss/magicapi/redis/RedisConstant.java
create mode 100644 magic-api-plugins/magic-api-plugin-dynamic-redis/src/main/java/org/ssssssss/magicapi/redis/RedisDynamicModule.java
create mode 100644 magic-api-plugins/magic-api-plugin-dynamic-redis/src/main/java/org/ssssssss/magicapi/redis/RedisInstanceFactory.java
create mode 100644 magic-api-plugins/magic-api-plugin-dynamic-redis/src/main/java/org/ssssssss/magicapi/redis/RedisResource.java
create mode 100644 magic-api-plugins/magic-api-plugin-dynamic-redis/src/main/resources/META-INF/spring.factories
create mode 100644 magic-api-plugins/magic-api-plugin-dynamic-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
diff --git a/magic-api-plugins/magic-api-plugin-dynamic-redis/pom.xml b/magic-api-plugins/magic-api-plugin-dynamic-redis/pom.xml
new file mode 100644
index 00000000..dbcd9922
--- /dev/null
+++ b/magic-api-plugins/magic-api-plugin-dynamic-redis/pom.xml
@@ -0,0 +1,25 @@
+
+
+ 4.0.0
+
+ org.ssssssss
+ magic-api-plugins
+ 3.0.0
+
+ magic-api-plugin-dynamic-redis
+ jar
+ magic-api-plugin-dynamic-redis
+ magic-api-plugin-dynamic-redis
+
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+
+
+ org.apache.commons
+ commons-pool2
+
+
+
diff --git a/magic-api-plugins/magic-api-plugin-dynamic-redis/src/main/java/org/ssssssss/magicapi/redis/MagicDynamicRedisAutoConfig.java b/magic-api-plugins/magic-api-plugin-dynamic-redis/src/main/java/org/ssssssss/magicapi/redis/MagicDynamicRedisAutoConfig.java
new file mode 100644
index 00000000..54d244d2
--- /dev/null
+++ b/magic-api-plugins/magic-api-plugin-dynamic-redis/src/main/java/org/ssssssss/magicapi/redis/MagicDynamicRedisAutoConfig.java
@@ -0,0 +1,76 @@
+package org.ssssssss.magicapi.redis;
+
+
+import lombok.Getter;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.DependsOn;
+import org.springframework.context.annotation.Import;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.ssssssss.magicapi.utils.Assert;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+
+@Slf4j
+@EnableAsync
+@Configuration
+@DependsOn("redisInstanceFactory")
+@ConfigurationProperties(prefix = "magic-api.redis")
+@Import({MagicRedisConfiguration.class,RedisInstanceFactory.class,MagicRedisConfiguration.class})
+public class MagicDynamicRedisAutoConfig implements InitializingBean {
+
+ @Getter
+ public static String primary;
+
+ @Getter
+ private static Map dynamic = new LinkedHashMap<>();
+
+ @Override
+ public void afterPropertiesSet() {
+ Assert.isNotNull(primary, "Redis未设置默认库");
+ dynamic.forEach((redisName, redisProperty) -> {
+ // 构建Redis服务
+ RedisInstanceFactory.getInstance().buildRedisTemplate(redisName, redisProperty);
+ });
+ log.info("[动态Redis]--共创建Redis[{}]个", dynamic.size());
+ }
+
+ @Bean
+ public StringRedisTemplate stringRedisTemplate() {
+ MagicRedisProperties redisProperties = dynamic.get(primary);
+ RedisConnectionFactory connectionFactory = RedisInstanceFactory.getInstance().buildLettuceConnectionFactory(primary, redisProperties);
+ StringRedisTemplate template = new StringRedisTemplate();
+ template.setConnectionFactory(connectionFactory);
+ return template;
+ }
+
+ @Bean
+ public RedisTemplate