当我们在 pom.xml 文件中加入
<dependency> <!-- 优化Redis相关逻辑-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
复制代码
即可直接注入
StringRedisTemplate
RedisTemplate 使用
一般情况下 StringRedisTemplate 会默认使用 StringRedisSerializer 作为序列化器
如图所示:
RedisTemplate 使用 JdkSerializationRedisSerializer 作为序列化器
JdkSerializationRedisSerializer 会将数据以自己数组的形式存储在 Redis 中,当我们打开 Redis 查看数时,就会出现以下现象,可读性不强,不利于问题的排查;
但是由于 StringRedisTemplate 只适合 K,V 都是 String 的场景进行处理,所能处理的场景有限,因此,一般会对 RedisTemplate 的序列化器进行设置。
@Configuration
public class RedisTemplateConfiguration {
@Bean
public RedisTemplate<Object,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
// 使用Jackson2JsonRedisSerialize 替换默认序列化
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
// 设置key和value的序列化规则
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}
复制代码
参考:
聊聊 RedisTemplate 的各种序列化器
https://shusheng007.top/2023/08/11/redis-serializer/
评论