Browse Source

♻️ 调整缓存由序列化改为 json 格式,[ISSUE#57](https://github.com/xkcoding/spring-boot-demo/issues/57)

pull/1/head
Yangkai.Shen 5 years ago
parent
commit
ddb3c50e1d
3 changed files with 32 additions and 3 deletions
  1. +13
    -1
      spring-boot-demo-cache-redis/README.md
  2. +17
    -0
      spring-boot-demo-cache-redis/src/main/java/com/xkcoding/cache/redis/config/RedisConfig.java
  3. +2
    -2
      spring-boot-demo-cache-redis/src/test/java/com/xkcoding/cache/redis/service/UserServiceTest.java

+ 13
- 1
spring-boot-demo-cache-redis/README.md View File

@@ -148,6 +148,18 @@ public class RedisConfig {
template.setConnectionFactory(redisConnectionFactory); template.setConnectionFactory(redisConnectionFactory);
return template; return template;
} }

/**
* 配置使用注解的时候缓存配置,默认是序列化反序列化的形式,加上此配置则为 json 形式
*/
@Bean
public CacheManager cacheManager(RedisConnectionFactory factory) {
// 配置序列化
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();
RedisCacheConfiguration redisCacheConfiguration = config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer())).serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));

return RedisCacheManager.builder(factory).cacheDefaults(redisCacheConfiguration).build();
}
} }
``` ```


@@ -327,7 +339,7 @@ public class UserServiceTest extends SpringBootDemoCacheRedisApplicationTests {
*/ */
@Test @Test
public void getAfterSave() { public void getAfterSave() {
userService.saveOrUpdate(new User(4L, "user4"));
userService.saveOrUpdate(new User(4L, "测试中文"));


User user = userService.get(4L); User user = userService.get(4L);
log.debug("【user】= {}", user); log.debug("【user】= {}", user);


+ 17
- 0
spring-boot-demo-cache-redis/src/main/java/com/xkcoding/cache/redis/config/RedisConfig.java View File

@@ -2,12 +2,17 @@ package com.xkcoding.cache.redis.config;


import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.StringRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer;


import java.io.Serializable; import java.io.Serializable;
@@ -41,4 +46,16 @@ public class RedisConfig {
template.setConnectionFactory(redisConnectionFactory); template.setConnectionFactory(redisConnectionFactory);
return template; return template;
} }

/**
* 配置使用注解的时候缓存配置,默认是序列化反序列化的形式,加上此配置则为 json 形式
*/
@Bean
public CacheManager cacheManager(RedisConnectionFactory factory) {
// 配置序列化
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();
RedisCacheConfiguration redisCacheConfiguration = config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer())).serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));

return RedisCacheManager.builder(factory).cacheDefaults(redisCacheConfiguration).build();
}
} }

+ 2
- 2
spring-boot-demo-cache-redis/src/test/java/com/xkcoding/cache/redis/service/UserServiceTest.java View File

@@ -44,7 +44,7 @@ public class UserServiceTest extends SpringBootDemoCacheRedisApplicationTests {
*/ */
@Test @Test
public void getAfterSave() { public void getAfterSave() {
userService.saveOrUpdate(new User(4L, "user4"));
userService.saveOrUpdate(new User(4L, "测试中文"));


User user = userService.get(4L); User user = userService.get(4L);
log.debug("【user】= {}", user); log.debug("【user】= {}", user);
@@ -62,4 +62,4 @@ public class UserServiceTest extends SpringBootDemoCacheRedisApplicationTests {
userService.delete(1L); userService.delete(1L);
} }


}
}

Loading…
Cancel
Save