Spring Redis 사용해보기
Spring Data Redis를 통해 pub/sub를 사용해보겠습니다. maven 세팅은 빼고 제가 실습했을 때 발생하는 문제에 대한 해결방법만 적어보았습니다.
문제가 더 많이 발생할 경우 이를 해당하는 방법을 추가로 업데이트 하도록 하겠습니다.
기본으로 사용시 jedisConnectionFactory 팩토리의 이름이 redisConnectionFactory 이여야 오류 발생 안함
<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:usePool="true" p:hostName="localhost" p:port="6379"/>
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" p:connectionFactory-ref="jedisConnectionFactory"/>
<bean id="listener" class="kcube.ekp.util.MyMessageListener"/>
<redis:listener-container>
<redis:listener ref="listener" topic="say"/>
</redis:listener-container>
사용 안할 시 redisContainer 사용
<bean id="messageListener" class="org.springframework.data.redis.listener.adapter.MessageListenerAdapter">
<constructor-arg>
<bean class="redisexample.DefaultMessageDelegate"/>
</constructor-arg>
</bean>
<bean id="redisContainer" class="org.springframework.data.redis.listener.RedisMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="messageListeners">
<map>
<entry key-ref="messageListener">
<bean class="org.springframework.data.redis.listener.ChannelTopic">
<constructor-arg value="chatroom">
</bean>
</entry>
</map>
</property>
</bean>
한글 깨짐 문제 발생
- 리턴 타입을 String 으로 바꿔주기 GenericToStringSerializer 클래스를 사용해서 안에 생성자로 Object를 넣어줍니다. Object의 풀 경로를 적어줘야합니다.
- redisTemplate 에서 p네임스페이스를 이용해서 valueSerializer-ref 에 앞에서 만든 GenericToStringSerializer 를 연결해줍니다.
<bean id="genericToStringSerializer" class="org.springframework.data.redis.serializer.GenericToStringSerializer">
<constructor-arg>
<value>java.lang.Object</value>
</constructor-arg>
</bean>
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" p:connectionFactory-ref="redisConnectionFactory" p:valueSerializer-ref="genericToStringSerializer"/>
오브젝트 리턴 받기
- 리턴 타입을 String 으로 바꿔주기 Jackson2JsonRedisSerializer클래스를 사용해서 안에 생성자로 java.util.Map를 넣어줍니다. Map의 풀 경로를 적어줘야합니다.
- redisTemplate 에서 p네임스페이스를 이용해서 valueSerializer-ref 에 앞에서 만든 Jackson2JsonRedisSerializer를 연결해줍니다.
- 맵형태로 리턴이 됩니다.
<bean id="jackson2JsonRedisSerializer" class="org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer">
<constructor-arg>
<value>java.util.Map</value>
</constructor-arg>
</bean>
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"
p:connectionFactory-ref="redisConnectionFactory" p:valueSerializer-ref="jackson2JsonRedisSerializer"/>
댓글 없음:
댓글 쓰기