しばらくの間グーグルで検索して、http://java.dzone.com/articles/spring-data-redisでヘルプを見つけました。
これは、Javaのシリアル化が原因で発生しました。
redisTemplateのキーシリアライザーは、StringRedisSerializer
に構成する必要があります つまり、次のようになります:
<bean
id="jedisConnectionFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:host-name="${redis.server}"
p:port="${redis.port}"
p:use-pool="true"/>
<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"
/>
現在、redisのキーはvc:501381
です。 。
または、@ niconicが言うように、次のようにデフォルトのシリアライザー自体を文字列シリアライザーに設定することもできます。
<bean
id="redisTemplate"
class="org.springframework.data.redis.core.RedisTemplate"
p:connection-factory-ref="jedisConnectionFactory"
p:defaultSerializer-ref="stringRedisSerializer"
/>
これは、すべてのキーと値が文字列であることを意味します。ただし、値を単なる文字列ではなくしたい場合があるため、これは好ましくない場合があることに注意してください。
値がドメインオブジェクトの場合は、Jacksonシリアライザーを使用して、ここで説明するように、つまり次のようにシリアライザーを構成できます。
<bean id="userJsonRedisSerializer" class="org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer">
<constructor-arg type="java.lang.Class" value="com.mycompany.redis.domain.User"/>
</bean>
テンプレートを次のように構成します:
<bean
id="redisTemplate"
class="org.springframework.data.redis.core.RedisTemplate"
p:connection-factory-ref="jedisConnectionFactory"
p:keySerializer-ref="stringRedisSerializer"
p:hashKeySerializer-ref="stringRedisSerializer"
p:valueSerialier-ref="userJsonRedisSerializer"
/>