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

Spring data redis remplace le sérialiseur par défaut

Vous l'avez probablement résolu entre-temps, mais pour d'autres chercheurs de réponses.

Selon la référence redis des données de printemps :

Par défaut, RedisCache et RedisTemplate sont configurés pour utiliser la sérialisation native Java.

À partir de stacktrace, je peux voir que vous utilisez réellement Redis pour la mise en cache, vous devez donc configurer RedisCache et non RedisTemplate . RedisCache ne récupère pas votre @Bean car il n'utilise pas RedisTemplate intérieurement.

Exemple comment vous pouvez le faire en Java :

    @EnableCaching
    @Configuration
    public class CacheConfig {

        @Bean
        @Primary
        public RedisCacheConfiguration defaultCacheConfig(ObjectMapper objectMapper) {
            return RedisCacheConfiguration.defaultCacheConfig()
                .serializeKeysWith(SerializationPair.fromSerializer(new StringRedisSerializer()))
                .serializeValuesWith(SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer(objectMapper)));
        }

    }