>  기사  >  데이터 베이스  >  Redis 직렬화 변환 유형 오류를 해결하는 방법

Redis 직렬화 변환 유형 오류를 해결하는 방법

WBOY
WBOY앞으로
2023-05-30 20:26:001192검색

'org.springframework.data.redis.core.convert.MappingRedisConverter' 유형의 값을 필수 유형 'org.springframework.data.redis.core.mapping.RedisMappingContext'로 변환할 수 없습니다. 일치하는 편집기 또는 변환 전략을 찾을 수 없습니다.

setValue의 직렬화 방법 중 오류가 보고되었습니다. 원래 RedisSerializer.json() 메서드를 사용했으나 오류가 보고되었습니다.

template.setConnectionFactory(factory);
        // key序列化方式
        template.setKeySerializer(RedisSerializer.string());
        // value序列化方式
        template.setValueSerializer(RedisSerializer.json());
        // hash key的序列化方式
        template.setHashKeySerializer(RedisSerializer.string());
        // hash value的序列化方式
        template.setHashValueSerializer(RedisSerializer.json());

문제를 해결하기 위해 다음과 같이 변경했습니다.

template.setConnectionFactory(factory);
        // key序列化方式
        template.setKeySerializer(RedisSerializer.string());
        // value序列化方式
        template.setValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class));
        // hash key的序列化方式
        template.setHashKeySerializer(RedisSerializer.string());
        // hash value的序列化方式
        template.setHashValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class));

Redis에는 여러 직렬화 구현을 선택할 수 있습니다. 그중 Jackson2JsonRedisSerializer 및 RedisSerializer.json()은 Redis의 직렬화 구현입니다. 차이점은 다음과 같습니다.

Jackson2JsonRedisSerializer는 Jackson 라이브러리를 사용하여 Java 객체를 JSON 형식 문자열로 직렬화하고 이를 Redis에 저장합니다. Redis에서 읽은 JSON 문자열을 Java 객체로 변환할 수도 있습니다. 따라서 Jackson2JsonRedisSerializer를 사용하면 JSON 형식 데이터를 쉽게 처리할 수 있으며 복잡한 Java 객체의 직렬화 및 역직렬화를 더 효과적으로 수행할 수 있습니다. 직렬화 프로세스를 완전히 제어하려면 직렬화 중에 Java 객체의 일부 필드가 무시될 수 있으므로 특정 구성이 필요합니다.

RedisSerializer.json()은 Redis에 내장된 JSON 직렬 변환기를 사용하여 Java 객체를 JSON 형식 문자열로 직렬화하고 이를 Redis에 저장합니다. Redis에서 가져온 JSON 문자열을 Java 객체로 역직렬화하는 데에도 사용할 수 있습니다. Jackson2JsonRedisSerializer와 비교하여 RedisSerializer.json()은 직렬화 프로세스 중에 Java 개체의 모든 필드를 Redis로 직렬화하지만 복잡한 Java 개체를 처리할 때는 몇 가지 추가 구성이 필요할 수 있습니다.

그래서 어떤 직렬화 방법을 선택할지는 사용 시나리오와 특정 요구 사항에 따라 다릅니다. 복잡한 Java 객체를 처리해야 하고 직렬화 및 역직렬화에 대한 정밀한 제어가 중요한 경우 Jackson2JsonRedisSerializer가 더 나은 선택입니다. 그리고 처리되는 데이터가 상대적으로 단순하거나 Java 객체를 JSON 형식 문자열로 변환하여 저장하기만 하면 되는 경우 RedisSerializer.json()이 더 적합할 수 있습니다.

위 내용은 Redis 직렬화 변환 유형 오류를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제