redis使用java的默认系列化方式,以java的默认协议将要储存的对象转换为字节流,然而,redis-cli中的显示却以utf-8的编码方式显示,所以是乱码。
使用
Set<String> keys = redisTemplate.keys("*");
for (String key : keys) {
System.out.println(key);
}
输出字符串时会空,是*匹配的是字符,无法匹配序列化的二进制数据
添加配置类解决
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(factory);
// 设置Key的序列化器
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new StringRedisSerializer()); // 可选,值也设置为字符串
template.afterPropertiesSet();
return template;
}
}