diff --git a/pom.xml b/pom.xml
index c1d4c02..6973658 100644
--- a/pom.xml
+++ b/pom.xml
@@ -12,6 +12,7 @@
UTF-8
UTF-8
3.2.2
+ 3.23.5
@@ -55,12 +56,6 @@
spring-boot-starter-thymeleaf
-
-
org.apache.commons
@@ -247,6 +242,13 @@
sms4j-spring-boot-starter
3.3.5
+
+
+
+ org.redisson
+ redisson-spring-boot-starter
+ ${redisson.version}
+
@@ -332,4 +334,4 @@
-
\ No newline at end of file
+
diff --git a/src/main/java/com/kexue/skills/config/RedissonConfig.java b/src/main/java/com/kexue/skills/config/RedissonConfig.java
new file mode 100644
index 0000000..ee3fc46
--- /dev/null
+++ b/src/main/java/com/kexue/skills/config/RedissonConfig.java
@@ -0,0 +1,47 @@
+package com.kexue.skills.config;
+
+import org.redisson.Redisson;
+import org.redisson.api.RedissonClient;
+import org.redisson.config.Config;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * Redisson配置类
+ *
+ * @author 王志维
+ * @since 2026-01-28
+ */
+@Configuration
+public class RedissonConfig {
+
+ @Value("${common.redis.host}")
+ private String host;
+
+ @Value("${common.redis.port}")
+ private int port;
+
+ @Value("${common.redis.password}")
+ private String password;
+
+ @Value("${common.redis.database}")
+ private int database;
+
+ @Bean(destroyMethod = "shutdown")
+ public RedissonClient redissonClient() {
+ Config config = new Config();
+
+ // 单节点模式
+ config.useSingleServer()
+ .setAddress("redis://" + host + ":" + port)
+ .setPassword(password)
+ .setDatabase(database)
+ .setConnectionMinimumIdleSize(5)
+ .setConnectionPoolSize(20)
+ .setTimeout(10000);
+
+ return Redisson.create(config);
+ }
+
+}
diff --git a/src/main/java/com/kexue/skills/service/impl/SysUserServiceImpl.java b/src/main/java/com/kexue/skills/service/impl/SysUserServiceImpl.java
index cb83c05..a6e213c 100644
--- a/src/main/java/com/kexue/skills/service/impl/SysUserServiceImpl.java
+++ b/src/main/java/com/kexue/skills/service/impl/SysUserServiceImpl.java
@@ -20,6 +20,8 @@ import com.kexue.skills.utils.MD5Util;
import lombok.extern.slf4j.Slf4j;
import org.dromara.sms4j.api.SmsBlend;
import org.dromara.sms4j.core.factory.SmsFactory;
+import org.redisson.api.RBucket;
+import org.redisson.api.RedissonClient;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -46,6 +48,9 @@ public class SysUserServiceImpl implements SysUserService {
@Resource
private org.springframework.data.redis.core.RedisTemplate redisTemplate;
+ @Resource
+ private RedissonClient redissonClient;
+
@Resource
private CaptchaConfig captchaConfig;
@@ -627,7 +632,7 @@ public class SysUserServiceImpl implements SysUserService {
String code = generateSmsCode();
// 存储验证码到Redis,有效期5分钟
- redisTemplate.opsForValue().set("sms_code:" + phone, code, 300, java.util.concurrent.TimeUnit.SECONDS);
+ redissonClient.getBucket("sms_code:" + phone).set(code, 300, java.util.concurrent.TimeUnit.SECONDS);
// 获取默认的短信发送器
SmsBlend sms = SmsFactory.getSmsBlend();
diff --git a/src/main/resources/application-common.yml b/src/main/resources/application-common.yml
new file mode 100644
index 0000000..f7fd407
--- /dev/null
+++ b/src/main/resources/application-common.yml
@@ -0,0 +1,8 @@
+# 公共配置
+common:
+ # Redis配置
+ redis:
+ host: 43.248.97.33
+ port: 16380
+ password: 5Qsd1rTx3S7rKs0A
+ database: 1
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index 637365a..5cce1a8 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -12,7 +12,19 @@ spring:
hikari:
pool-name: ProdHikariPool
maximum-pool-size: 30
-
+ # Redis配置,引用公共配置
+ redis:
+ host: ${common.redis.host}
+ port: ${common.redis.port}
+ password: ${common.redis.password}
+ database: ${common.redis.database}
+ timeout: 10000
+ lettuce:
+ pool:
+ max-active: 8
+ max-wait: -1
+ max-idle: 8
+ min-idle: 0
# Sa-Token配置
sa-token:
@@ -32,16 +44,16 @@ sa-token:
is-header: true
# 是否使用Redis存储token
is-redis: true
- # Redis配置
+ # Redis配置,引用公共配置
redis:
# Redis主机地址
- host: 43.248.97.19
+ host: ${common.redis.host}
# Redis端口
- port: 16379
+ port: ${common.redis.port}
# Redis密码
- password: 654321
+ password: ${common.redis.password}
# Redis数据库索引
- database: 1
+ database: ${common.redis.database}
# 验证码配置
captcha:
@@ -75,10 +87,10 @@ jetcache:
minIdle: 5
maxIdle: 20
maxTotal: 50
- host: 43.248.97.19
- port: 16379
- password: 654321
- database: 1
+ host: ${common.redis.host}
+ port: ${common.redis.port}
+ password: ${common.redis.password}
+ database: ${common.redis.database}
# 全局过期时间配置
global:
# 全局默认超时时间(毫秒)
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 0e8192f..8bf77c7 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -27,6 +27,10 @@ spring:
max-request-size: 20MB
max-file-size: 20MB
+# 包含公共配置文件
+spring.config.import:
+ - classpath:application-common.yml
+
springdoc:
api-docs:
enabled: true
@@ -68,4 +72,3 @@ sms:
# 短信模板变量名,对应验证码的变量
template-param-name: code
template-cache: true
-