Saya memecahkan masalah saya. Saya sedang mencari dan menemukan posting ini.
Saya mengubah kode saya untuk menggunakan beberapa properti RedisTemplate:
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory cf) {
RedisTemplate<String, String> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(cf);
configureSerializers(redisTemplate);
JedisConnectionFactory jedisConnectionFactory = (JedisConnectionFactory) cf;
JedisPoolConfig actualPoolConfig = jedisConnectionFactory.getPoolConfig();
jedisConnectionFactory.setPoolConfig(createJedisPoolConfig(actualPoolConfig));
return redisTemplate;
}
private void configureSerializers(RedisTemplate<String, String> redisTemplate) {
RedisSerializer<String> serializerKey = new StringRedisSerializer();
redisTemplate.setKeySerializer(serializerKey);
redisTemplate.setHashKeySerializer(serializerKey);
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
om.configure(
DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
jackson2JsonRedisSerializer.setObjectMapper(om);
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
}
Masalahnya adalah karena Serializer default adalah "JdkSerializationRedisSerializer", sekarang saya menggunakan "StringRedisSerializer" untuk menghasilkan kunci. Untuk menghasilkan nilai, saya menggunakan "Jackson2JsonRedisSerializer" untuk mengubah data saya di JsonValue.
Sekarang, kunci saya tidak memiliki karakter "aneh".