Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Spring Boot + Redis - Generieren eines seltsamen Schlüssels

Ich habe mein Problem gelöst. Ich habe gesucht und diesen Beitrag gefunden.

Ich habe meinen Code geändert, um einige Eigenschaften von RedisTemplate zu verwenden:

@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);
}    

Das Problem besteht darin, dass der Standard-Serializer „JdkSerializationRedisSerializer“ ist. Jetzt verwende ich „StringRedisSerializer“, um einen Schlüssel zu generieren. Um einen Wert zu generieren, verwende ich „Jackson2JsonRedisSerializer“, um meine Daten in JsonValue umzuwandeln.

Jetzt haben meine Schlüssel nicht die "seltsamen" Zeichen.