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

Spring Data Redis überschreibt den Standard-Serializer

Sie haben es wahrscheinlich inzwischen gelöst, aber für weitere Antwortsuchende.

Laut Spring Data Redis Referenz:

Standardmäßig sind RedisCache und RedisTemplate so konfiguriert, dass sie die native Java-Serialisierung verwenden.

Aus Stacktrace kann ich sehen, dass Sie tatsächlich Redis für das Caching verwenden, also müssen Sie RedisCache konfigurieren und nicht RedisTemplate . RedisCache nimmt Ihr @Bean nicht an weil es RedisTemplate nicht verwendet im Inneren.

Beispiel wie man es in Java machen kann:

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

    }