복붙노트

[SPRING] Spring 데이터 RedisTemplate : 값과 해시 값 직렬화

SPRING

Spring 데이터 RedisTemplate : 값과 해시 값 직렬화

이 자습서를 따라 해 보았습니다. http://javakart.blogspot.in/2012/12/spring-data-redis-hello-world-example.html

내 질문은 이것과 관련있다. 봄 데이터가있는 이상한 redis 키 Jedis

나는 StringRedisSerializer를 사용하여 키와 해시 키를 풀 수 있었다.

<bean 
id="stringRedisSerializer" 
class="org.springframework.data.redis.serializer.StringRedisSerializer"/>

<bean 
id="redisTemplate" 
class="org.springframework.data.redis.core.RedisTemplate"
p:connection-factory-ref="jedisConnectionFactory" 
p:keySerializer-ref="stringRedisSerializer"
p:hashKeySerializer-ref="stringRedisSerializer" 
/>

그러나 나는 가치와 hashvalue에 대한 serializer를 사용하여 문제가 발견.

나는 이것을 추가하려고했다.

p:valueSerializer-ref="stringRedisSerializer"
p:hashValueSerializer-ref="stringRedisSerializer"

그러나 오류 메시지가 표시됩니다. "사용자는 java.lang.String에 캐스트 할 수 없습니다"

누구든지 value / hashvalue에 대한 serializer 사용법을 공유 할 수 있습니까?

해결법

  1. ==============================

    1.Redis는 키와 값을 문자열로 저장합니다. 파싱을 처리하는 것은 지속성 계층에 달려 있습니다. 이 예에서 User는 String이 아닌 POJO입니다. StringRedisSerializer 대신 JacksonJsonRedisSerializer를 사용하는 것이 좋습니다. 이렇게하면 json을 값으로 저장하게됩니다.

    Redis는 키와 값을 문자열로 저장합니다. 파싱을 처리하는 것은 지속성 계층에 달려 있습니다. 이 예에서 User는 String이 아닌 POJO입니다. StringRedisSerializer 대신 JacksonJsonRedisSerializer를 사용하는 것이 좋습니다. 이렇게하면 json을 값으로 저장하게됩니다.

    <bean id="userJsonRedisSerializer" 
        class="org.springframework.data.redis.serializer.JacksonJsonRedisSerializer">
        <constructor-arg type="java.lang.Class" value="com.mycompany.redis.domain.User"/>
    </bean>
    
  2. from https://stackoverflow.com/questions/24239145/spring-data-redistemplate-serializing-the-value-and-hashvalue by cc-by-sa and MIT license