Redis
 sql >> Base de données >  >> NoSQL >> Redis

Spring boot + Redis - Génération d'une clé étrange

J'ai résolu mon problème. Je cherchais et j'ai trouvé ce message.

J'ai modifié mon code pour utiliser certaines propriétés de 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);
}    

Le problème est que le sérialiseur par défaut est "JdkSerializationRedisSerializer", maintenant j'utilise "StringRedisSerializer" pour générer une clé. Pour générer une valeur, j'utilise "Jackson2JsonRedisSerializer" pour transformer mes données en JsonValue.

Maintenant, mes clés n'ont pas les caractères "étranges".