From 7b9358a4f0f95431e9012b6d9a4330fc17e73dc7 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期四, 06 六月 2024 11:13:47 +0800
Subject: [PATCH] ♥️发布 5.2.0-BETA2 公测版本
---
ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/config/RedisConfig.java | 56 +++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 41 insertions(+), 15 deletions(-)
diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/config/RedisConfig.java b/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/config/RedisConfig.java
index 644edbe..f8fe79a 100644
--- a/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/config/RedisConfig.java
+++ b/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/config/RedisConfig.java
@@ -1,19 +1,31 @@
package org.dromara.common.redis.config;
import cn.hutool.core.util.ObjectUtil;
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.core.utils.SpringUtils;
import org.dromara.common.redis.config.properties.RedissonProperties;
import org.dromara.common.redis.handler.KeyPrefixHandler;
-import org.dromara.common.redis.manager.PlusSpringCacheManager;
-import lombok.extern.slf4j.Slf4j;
-import org.redisson.codec.JsonJacksonCodec;
+import org.dromara.common.redis.handler.RedisExceptionHandler;
+import org.redisson.client.codec.StringCodec;
+import org.redisson.codec.CompositeCodec;
+import org.redisson.codec.TypedJsonJacksonCodec;
import org.redisson.spring.starter.RedissonAutoConfigurationCustomizer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.cache.CacheManager;
-import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
+import org.springframework.core.task.VirtualThreadTaskExecutor;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.TimeZone;
/**
* redis閰嶇疆
@@ -22,22 +34,36 @@
*/
@Slf4j
@AutoConfiguration
-@EnableCaching
@EnableConfigurationProperties(RedissonProperties.class)
public class RedisConfig {
@Autowired
private RedissonProperties redissonProperties;
- @Autowired
- private ObjectMapper objectMapper;
-
@Bean
public RedissonAutoConfigurationCustomizer redissonCustomizer() {
return config -> {
+ JavaTimeModule javaTimeModule = new JavaTimeModule();
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+ javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(formatter));
+ javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(formatter));
+ ObjectMapper om = new ObjectMapper();
+ om.registerModule(javaTimeModule);
+ om.setTimeZone(TimeZone.getDefault());
+ om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
+ // 鎸囧畾搴忓垪鍖栬緭鍏ョ殑绫诲瀷锛岀被蹇呴』鏄潪final淇グ鐨勩�傚簭鍒楀寲鏃跺皢瀵硅薄鍏ㄧ被鍚嶄竴璧蜂繚瀛樹笅鏉�
+ om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL);
+ TypedJsonJacksonCodec jsonCodec = new TypedJsonJacksonCodec(Object.class, om);
+ // 缁勫悎搴忓垪鍖� key 浣跨敤 String 鍐呭浣跨敤閫氱敤 json 鏍煎紡
+ CompositeCodec codec = new CompositeCodec(StringCodec.INSTANCE, jsonCodec, jsonCodec);
config.setThreads(redissonProperties.getThreads())
.setNettyThreads(redissonProperties.getNettyThreads())
- .setCodec(new JsonJacksonCodec(objectMapper));
+ // 缂撳瓨 Lua 鑴氭湰 鍑忓皯缃戠粶浼犺緭(redisson 澶ч儴鍒嗙殑鍔熻兘閮芥槸鍩轰簬 Lua 鑴氭湰瀹炵幇)
+ .setUseScriptCache(true)
+ .setCodec(codec);
+ if (SpringUtils.isVirtual()) {
+ config.setNettyExecutor(new VirtualThreadTaskExecutor("redisson-"));
+ }
RedissonProperties.SingleServerConfig singleServerConfig = redissonProperties.getSingleServerConfig();
if (ObjectUtil.isNotNull(singleServerConfig)) {
// 浣跨敤鍗曟満妯″紡
@@ -73,18 +99,18 @@
}
/**
- * 鑷畾涔夌紦瀛樼鐞嗗櫒 鏁村悎spring-cache
+ * 寮傚父澶勭悊鍣�
*/
@Bean
- public CacheManager cacheManager() {
- return new PlusSpringCacheManager();
+ public RedisExceptionHandler redisExceptionHandler() {
+ return new RedisExceptionHandler();
}
/**
* redis闆嗙兢閰嶇疆 yml
*
* --- # redis 闆嗙兢閰嶇疆(鍗曟満涓庨泦缇ゅ彧鑳藉紑鍚竴涓彟涓�涓渶瑕佹敞閲婃帀)
- * spring:
+ * spring.data:
* redis:
* cluster:
* nodes:
@@ -96,7 +122,7 @@
* # 杩炴帴瓒呮椂鏃堕棿
* timeout: 10s
* # 鏄惁寮�鍚痵sl
- * ssl: false
+ * ssl.enabled: false
*
* redisson:
* # 绾跨▼姹犳暟閲�
--
Gitblit v1.9.3