Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Nhận giá trị Đặt từ Redis bằng RedisTemplate

Tóm lại

Bạn phải định cấu hình bộ tuần tự.

Giải thích

Mẫu Redis sử dụng bộ tuần tự hóa cho các khóa, giá trị và khóa / giá trị băm. Serializers được sử dụng để chuyển đổi đầu vào Java thành biểu diễn được lưu trữ trong Redis. Nếu bạn không định cấu hình bất kỳ thứ gì, trình tuần tự sẽ mặc định thành JdkSerializationRedisSerializer . Vì vậy, nếu bạn yêu cầu một khóa key trong mã Java của bạn, trình tuần tự chuyển đổi nó thành

"\xac\xed\x00\x05t\x00\x03key"

và Spring Data Redis sử dụng các byte đó làm khóa để truy vấn Redis.

Bạn có thể thêm dữ liệu với Spring Data Redis và truy vấn nó bằng cách sử dụng redis-cli :

template.boundSetOps("myKey").add(new Date());

và sau đó trong redis-cli

127.0.0.1:6379> keys *
1) "\xac\xed\x00\x05t\x00\x05myKey"
127.0.0.1:6379> SMEMBERS "\xac\xed\x00\x05t\x00\x05myKey"
1) "\xac\xed\x00\x05sr\x00\x0ejava.util.Datehj\x81\x01KYt\x19\x03\x00\x00xpw\b\x00\x00\x01N\xcf#\x9cHx"

Như bạn thấy, Chuỗi và Ngày được tuần tự hóa thành một số byte điên rồ đại diện cho một đối tượng được tuần tự hóa bằng Java.

Mã của bạn gợi ý rằng bạn muốn lưu trữ các khóa và giá trị dựa trên chuỗi. Chỉ cần đặt StringRedisSerializer trong RedisTemplate của bạn

Cấu hình Java

redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new StringRedisSerializer());

Cấu hình XML

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

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

<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" 
    p:host-name="myhostname" p:port="6379"/>

Đầu ra sau khi chạy mã của bạn trông giống như sau:

value
key
[value]

Spring Data Redis có một số trình tuần tự thú vị cho phép trao đổi tin nhắn giữa các hệ thống khác nhau. Bạn có thể chọn trong số các bộ tuần tự tích hợp sẵn

  • JacksonJsonRedisSerializer
  • Jackson2JsonRedisSerializer
  • JdkSerializationRedisSerializer (mặc định)
  • OxmSerializer
  • GenericToStringSerializer

hoặc tạo của riêng bạn.

Tôi đã sử dụng Spring Data Redis 1.5.1.RELEASE và jedis 2.6.2 để xác minh kết quả câu hỏi của bạn. HTH, Mark

Đọc thêm:

  • Spring Data Redis:Serializers
  • Thông tin tóm tắt chứa ví dụ của bạn


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Sắp xếp động với Redis

  2. Redis:Hiển thị kích thước / kích thước cơ sở dữ liệu cho các khóa

  3. Cách lấy DIFF trên tập hợp đã sắp xếp

  4. có được một vùng chứa của python docker để tương tác với vùng chứa của redis docker

  5. Có thể thực hiện redis trên Heroku mà không cần addon không?