2014-06-16 19 views
5

Tôi đã cố gắng làm theo hướng dẫn này: http://javakart.blogspot.in/2012/12/spring-data-redis-hello-world-example.htmlmùa xuân dữ liệu RedisTemplate: Serializing giá trị và HashValue

Câu hỏi của tôi có liên quan đến điều này: Weird redis key with spring data Jedis

tôi đã có thể giải quyết các phím và hashkeys sử dụng 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" 
/> 

Tuy nhiên, tôi thấy đó là sự cố khi sử dụng trình nối tiếp cho giá trị và giá trị băm.

Tôi đã thử thêm này:

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

Nhưng một lỗi nhắc nhở: "Người dùng không thể được đúc để java.lang.String"

Bất cứ ai có phần làm thế nào để sử dụng một serializer cho giá trị/Giá trị băm?

+0

Điều này có vẻ như bạn đang tạo chuỗi đối tượng Người dùng làm đối tượng chuỗi. thay vào đó bạn có thể đánh dấu đối tượng User như Serializable bằng cách viết "class User implement java.io.Serializable" sau đó java serialiser mặc định sẽ tự động được quan tâm. Vì vậy, tốt hơn không cấu hình bất cứ điều gì liên quan đến "Serializer-ref =" trong beans.xml của bạn –

+0

http://stackoverflow.com/questions/13215024/weird-redis-key-with-spring-data-jedis –

Trả lời

9

Redis lưu trữ khóa và giá trị dưới dạng chuỗi. Đó là vào lớp kiên trì của bạn để xử lý việc phân tích cú pháp. Trong ví dụ, Người dùng là POJO chứ không phải là Chuỗi. Tôi đề nghị bạn sử dụng JacksonJsonRedisSerializer thay vì StringRedisSerializer. Bằng cách này bạn đang lưu trữ json là giá trị của bạn.

<bean id="userJsonRedisSerializer" 
    class="org.springframework.data.redis.serializer.JacksonJsonRedisSerializer"> 
    <constructor-arg type="java.lang.Class" value="com.mycompany.redis.domain.User"/> 
</bean> 
Các vấn đề liên quan