From f49ba52554f4273c894bd685046441d5b8e1b01d Mon Sep 17 00:00:00 2001
From: haoxr <1490493387@qq.com>
Date: Fri, 17 Feb 2023 18:53:18 +0800
Subject: [PATCH] =?UTF-8?q?refactor:=20redis=20json=E5=BA=8F=E5=88=97?=
=?UTF-8?q?=E5=8C=96=E4=BC=98=E5=8C=96=E5=92=8C=E6=B7=BB=E5=8A=A0=E5=BA=8F?=
=?UTF-8?q?=E5=88=97=E5=8C=96=E5=99=A8=E6=B5=8B=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../com/youlai/system/config/RedisConfig.java | 37 +++++++++---------
.../java/com/youlai/system/RedisTests.java | 38 +++++++++++++++++++
2 files changed, 56 insertions(+), 19 deletions(-)
create mode 100644 src/test/java/com/youlai/system/RedisTests.java
diff --git a/src/main/java/com/youlai/system/config/RedisConfig.java b/src/main/java/com/youlai/system/config/RedisConfig.java
index 5be83cad..819ff67f 100644
--- a/src/main/java/com/youlai/system/config/RedisConfig.java
+++ b/src/main/java/com/youlai/system/config/RedisConfig.java
@@ -1,41 +1,40 @@
package com.youlai.system.config;
-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 org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
-import org.springframework.data.redis.serializer.StringRedisSerializer;
+import org.springframework.data.redis.serializer.RedisSerializer;
+/**
+ * Redis 配置
+ */
@Configuration
@AutoConfigureBefore(RedisAutoConfiguration.class)
public class RedisConfig {
+
+
+ /**
+ * RedisTemplate 序列化配置
+ *
+ * 默认 JdkSerializationRedisSerializer,修改为 JSON 序列化
+ *
+ * @param lettuceConnectionFactory
+ * @return
+ */
@Bean
public RedisTemplate redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {
RedisTemplate redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(lettuceConnectionFactory);
- // 用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值
- StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
- redisTemplate.setKeySerializer(stringRedisSerializer); // key
- Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
- ObjectMapper objectMapper = new ObjectMapper();
- // 指定要序列化的域(field,get,set),访问修饰符(public,private,protected)
- objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
- objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL);
- jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
+ redisTemplate.setKeySerializer(RedisSerializer.string());
+ redisTemplate.setValueSerializer(RedisSerializer.json());
- redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); //value
-
- redisTemplate.setHashKeySerializer(stringRedisSerializer);
- redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
+ redisTemplate.setHashKeySerializer(RedisSerializer.string());
+ redisTemplate.setHashValueSerializer(RedisSerializer.json());
redisTemplate.afterPropertiesSet();
return redisTemplate;
diff --git a/src/test/java/com/youlai/system/RedisTests.java b/src/test/java/com/youlai/system/RedisTests.java
new file mode 100644
index 00000000..17386823
--- /dev/null
+++ b/src/test/java/com/youlai/system/RedisTests.java
@@ -0,0 +1,38 @@
+package com.youlai.system;
+
+import com.youlai.system.pojo.entity.SysUser;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.data.redis.core.RedisTemplate;
+
+/**
+ * Redis单元测试
+ *
+ * @author: haoxr
+ * @date: 2023/02/17
+ */
+@SpringBootTest
+@Slf4j
+public class RedisTests {
+
+ @Autowired
+ private RedisTemplate redisTemplate;
+
+ /**
+ * Redis 序列化配置
+ */
+ @Test
+ public void testRedisSerializer() {
+
+ SysUser user = new SysUser();
+ user.setId(1l);
+ user.setNickname("张三");
+ redisTemplate.opsForValue().set("user", user);
+ SysUser userCache = (SysUser)redisTemplate.opsForValue().get("user");
+ log.info("userCache:{}", userCache);
+
+ }
+
+}