Được, tôi đã tìm kiếm một lúc và tìm thấy trợ giúp tại http://java.dzone.com/articles/spring-data-redis.
Nó xảy ra do tuần tự hóa Java.
Bộ nối tiếp khóa cho redisTemplate cần được định cấu hình thành StringRedisSerializer
tức là như thế này:
<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"
/>
Bây giờ, khóa trong redis là vc:501381
.
Hoặc như @niconic nói, chúng ta cũng có thể đặt chính bộ tuần tự hóa mặc định thành bộ tuần tự hóa chuỗi như sau:
<bean
id="redisTemplate"
class="org.springframework.data.redis.core.RedisTemplate"
p:connection-factory-ref="jedisConnectionFactory"
p:defaultSerializer-ref="stringRedisSerializer"
/>
có nghĩa là tất cả các khóa và giá trị của chúng tôi là chuỗi. Tuy nhiên, lưu ý rằng điều này có thể không phù hợp, vì bạn có thể muốn các giá trị của mình không chỉ là chuỗi.
Nếu giá trị của bạn là một đối tượng miền, thì bạn có thể sử dụng bộ nối tiếp Jackson và định cấu hình bộ nối tiếp như đã đề cập ở đây, tức là như sau:
<bean id="userJsonRedisSerializer" class="org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer">
<constructor-arg type="java.lang.Class" value="com.mycompany.redis.domain.User"/>
</bean>
và định cấu hình mẫu của bạn thành:
<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"
/>