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 -