diff --git a/.gitignore b/.gitignore
index 38c0237..0180830 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,3 +31,4 @@ build/
### VS Code ###
.vscode/
+target/
\ No newline at end of file
diff --git a/demo/pom.xml b/core/pom.xml
similarity index 96%
rename from demo/pom.xml
rename to core/pom.xml
index 37d8c80..0442ebb 100644
--- a/demo/pom.xml
+++ b/core/pom.xml
@@ -129,6 +129,12 @@
redisson
3.16.0
+
+
+ com.alibaba
+ fastjson
+ 1.2.83
+
diff --git a/demo/src/main/java/com/dite/znpt/aspect/HttpLogAspect.java b/core/src/main/java/com/dite/znpt/aspect/HttpLogAspect.java
similarity index 100%
rename from demo/src/main/java/com/dite/znpt/aspect/HttpLogAspect.java
rename to core/src/main/java/com/dite/znpt/aspect/HttpLogAspect.java
diff --git a/demo/src/main/java/com/dite/znpt/config/BeanPostProcessorConfig.java b/core/src/main/java/com/dite/znpt/config/BeanPostProcessorConfig.java
similarity index 100%
rename from demo/src/main/java/com/dite/znpt/config/BeanPostProcessorConfig.java
rename to core/src/main/java/com/dite/znpt/config/BeanPostProcessorConfig.java
diff --git a/core/src/main/java/com/dite/znpt/config/FastJson2JsonRedisSerializer.java b/core/src/main/java/com/dite/znpt/config/FastJson2JsonRedisSerializer.java
new file mode 100644
index 0000000..2f97761
--- /dev/null
+++ b/core/src/main/java/com/dite/znpt/config/FastJson2JsonRedisSerializer.java
@@ -0,0 +1,52 @@
+package com.dite.znpt.config;
+
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.parser.ParserConfig;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.fasterxml.jackson.databind.JavaType;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.type.TypeFactory;
+import org.springframework.data.redis.serializer.RedisSerializer;
+import org.springframework.data.redis.serializer.SerializationException;
+import org.springframework.util.Assert;
+
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+
+public class FastJson2JsonRedisSerializer implements RedisSerializer {
+ private ObjectMapper objectMapper = new ObjectMapper();
+ public static final Charset DEFAULT_CHARSET;
+ private Class clazz;
+
+ public FastJson2JsonRedisSerializer(Class clazz) {
+ this.clazz = clazz;
+ }
+
+ public byte[] serialize(T t) throws SerializationException {
+ return t == null ? new byte[0] : JSON.toJSONString(t, new SerializerFeature[]{SerializerFeature.WriteClassName}).getBytes(DEFAULT_CHARSET);
+ }
+
+ public T deserialize(byte[] bytes) throws SerializationException {
+ if (bytes != null && bytes.length > 0) {
+ String str = new String(bytes, DEFAULT_CHARSET);
+ return JSON.parseObject(str, this.clazz);
+ } else {
+ return null;
+ }
+ }
+
+ public void setObjectMapper(ObjectMapper objectMapper) {
+ Assert.notNull(objectMapper, "'objectMapper' must not be null");
+ this.objectMapper = objectMapper;
+ }
+
+ protected JavaType getJavaType(Class> clazz) {
+ return TypeFactory.defaultInstance().constructType(clazz);
+ }
+
+ static {
+ DEFAULT_CHARSET = StandardCharsets.UTF_8;
+ ParserConfig.getGlobalInstance().setAutoTypeSupport(true);
+ }
+}
\ No newline at end of file
diff --git a/demo/src/main/java/com/dite/znpt/config/GlobalCorsConfig.java b/core/src/main/java/com/dite/znpt/config/GlobalCorsConfig.java
similarity index 100%
rename from demo/src/main/java/com/dite/znpt/config/GlobalCorsConfig.java
rename to core/src/main/java/com/dite/znpt/config/GlobalCorsConfig.java
diff --git a/demo/src/main/java/com/dite/znpt/config/JacksonConfig.java b/core/src/main/java/com/dite/znpt/config/JacksonConfig.java
similarity index 100%
rename from demo/src/main/java/com/dite/znpt/config/JacksonConfig.java
rename to core/src/main/java/com/dite/znpt/config/JacksonConfig.java
diff --git a/core/src/main/java/com/dite/znpt/config/RedisConfig.java b/core/src/main/java/com/dite/znpt/config/RedisConfig.java
new file mode 100644
index 0000000..11d1cbf
--- /dev/null
+++ b/core/src/main/java/com/dite/znpt/config/RedisConfig.java
@@ -0,0 +1,63 @@
+package com.dite.znpt.config;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cache.annotation.CachingConfigurerSupport;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.data.redis.cache.RedisCacheConfiguration;
+import org.springframework.data.redis.cache.RedisCacheManager;
+import org.springframework.data.redis.cache.RedisCacheWriter;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.script.DefaultRedisScript;
+import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.RedisSerializationContext;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+import org.springframework.stereotype.Component;
+
+import java.util.Objects;
+
+@Configuration
+@EnableCaching
+public class RedisConfig extends CachingConfigurerSupport {
+
+ public RedisConfig() {
+ }
+
+ @Bean
+ @Primary
+ public RedisTemplate