目录
方法一:为RedisTemplate写一个配置类
方法二:用StringRedisTemplate
我猜测,你可能想往redis里直接存对象,但是存完后,打开redis,才发现自己存进去的key和value均是乱码。
原因可能是因为你用redisTemplate的时候,没有配置它的序列化方式。
如何解决呢?
方法一:为RedisTemplate写一个配置类
@Configuration
@Slf4j
public class RedisConfiguration {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
log.info("开始创建redis模板对象");
RedisTemplate redisTemplate= new RedisTemplate();
//设置redis连接工厂对象
redisTemplate.setConnectionFactory(redisConnectionFactory);
//设置 redis key 的序列化器
redisTemplate.setKeySerializer(new StringRedisSerializer());
//设置 redis 值的序列化器
redisTemplate.setValueSerializer(new FastJsonRedisSerializer<>(Object.class));
return redisTemplate;
}
}
方法二:用StringRedisTemplate
在要存对象的时候,直接用FastJson将对象转为JSON字符串。
//这里是一个Test类
@SpringBootTest
public class buildTest {
@Autowired
StringRedisTemplate stringRedisTemplate;
@Test
void stringRedisTemplate(){
//新建一个对象
Dish dish = Dish.builder().id(100L).name("大盘鸡").build();
//往Redis里存对象
stringRedisTemplate.opsForValue().set("stredisTemplate", JSON.toJSONString(dish));
}
}