如何快速实现在SpringBoot中,Redis的引入和测试?
-
快速实现Redis的引入,主要做到以下几点:(2023/08/07早)
-
导入相关依赖坐标
-
作相关yaml配置
-
作测试
-
项目引入
-
-
导入依赖坐标:
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.6.4</version>
</dependency>
-
写配置:
# redis 配置
redis: port: 6379
host: localhost
database: 0
-
作测试:
@SpringBootTest
@Slf4j
class UserServiceImplTest {
@Resource
private RedisTemplate redisTemplate;
@Resource
private StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();
@Test
void loginTest() {
String redisKey = "pic_memories:user:login:session_key";
stringRedisTemplate.opsForValue().set("pic", "memory");
stringRedisTemplate.opsForValue().set(redisKey, "memory", 20, TimeUnit.HOURS);
redisTemplate.opsForValue().set(redisKey + "2", "memory2");
}
}
-
这里注意:
-
RedisTemplate 底层的序列化方式,会导致存入的序列化后的value值成为乱码
-
StringRedisTemplate 继承了 RedisTemplate 有效解决了这个问题,但只能存放<String,String>
-
综上,我们在使用Redis缓存技术时,可以自己自定义(封装一个)RedisTemplate
-
自定义 RedisTemplate<String, Object> (config/RedisTemplateConfig)
@Configuration
public class RedisTemplateConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
// 1.创建RedisTemplate对象
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
// 2.设置连接工厂
redisTemplate.setConnectionFactory(connectionFactory);
// 3.设置Key的序列化
redisTemplate.setKeySerializer(RedisSerializer.string());
// 4.创建JSON序列化工具
GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
// 5.设置value的序列化
redisTemplate.setValueSerializer(jsonRedisSerializer);
return redisTemplate;
}
}
-
解决 RedisTemplate 存入的序列化后的value值成为乱码的问题(2023/08/07早)