|
|
@ -1,12 +1,17 @@
|
|
|
|
package org.dromara.common.redis.config;
|
|
|
|
package org.dromara.common.redis.config;
|
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
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.ObjectMapper;
|
|
|
|
|
|
|
|
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
|
|
|
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import org.dromara.common.redis.config.properties.RedissonProperties;
|
|
|
|
import org.dromara.common.redis.config.properties.RedissonProperties;
|
|
|
|
import org.dromara.common.redis.handler.KeyPrefixHandler;
|
|
|
|
import org.dromara.common.redis.handler.KeyPrefixHandler;
|
|
|
|
import org.dromara.common.redis.manager.PlusSpringCacheManager;
|
|
|
|
import org.dromara.common.redis.manager.PlusSpringCacheManager;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import org.redisson.client.codec.StringCodec;
|
|
|
|
import org.redisson.codec.JsonJacksonCodec;
|
|
|
|
import org.redisson.codec.CompositeCodec;
|
|
|
|
|
|
|
|
import org.redisson.codec.TypedJsonJacksonCodec;
|
|
|
|
import org.redisson.spring.starter.RedissonAutoConfigurationCustomizer;
|
|
|
|
import org.redisson.spring.starter.RedissonAutoConfigurationCustomizer;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
|
|
|
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
|
|
@ -35,9 +40,16 @@ public class RedisConfig {
|
|
|
|
@Bean
|
|
|
|
@Bean
|
|
|
|
public RedissonAutoConfigurationCustomizer redissonCustomizer() {
|
|
|
|
public RedissonAutoConfigurationCustomizer redissonCustomizer() {
|
|
|
|
return config -> {
|
|
|
|
return config -> {
|
|
|
|
|
|
|
|
ObjectMapper om = objectMapper.copy();
|
|
|
|
|
|
|
|
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())
|
|
|
|
config.setThreads(redissonProperties.getThreads())
|
|
|
|
.setNettyThreads(redissonProperties.getNettyThreads())
|
|
|
|
.setNettyThreads(redissonProperties.getNettyThreads())
|
|
|
|
.setCodec(new JsonJacksonCodec(objectMapper));
|
|
|
|
.setCodec(codec);
|
|
|
|
RedissonProperties.SingleServerConfig singleServerConfig = redissonProperties.getSingleServerConfig();
|
|
|
|
RedissonProperties.SingleServerConfig singleServerConfig = redissonProperties.getSingleServerConfig();
|
|
|
|
if (ObjectUtil.isNotNull(singleServerConfig)) {
|
|
|
|
if (ObjectUtil.isNotNull(singleServerConfig)) {
|
|
|
|
// 使用单机模式
|
|
|
|
// 使用单机模式
|
|
|
|