問題を解決しました。この投稿を検索して見つけました。
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);
}
問題は、デフォルトのシリアライザーが「JdkSerializationRedisSerializer」であるためです。現在、「StringRedisSerializer」を使用してキーを生成しています。値を生成するには、「Jackson2JsonRedisSerializer」を使用してデータをJsonValueに変換しています。
現在、私のキーには「奇妙な」文字がありません。