Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Dapatkan nilai Set dari Redis menggunakan RedisTemplate

Singkatnya

Anda harus mengonfigurasi serializer.

Penjelasan

Template Redis menggunakan serializer untuk kunci, nilai, dan kunci/nilai hash. Serializer digunakan untuk mengubah input Java menjadi representasi yang disimpan dalam Redis. Jika Anda tidak mengonfigurasi apa pun, serializer default ke JdkSerializationRedisSerializer . Jadi jika Anda meminta kunci key dalam kode Java Anda, serializer mengubahnya menjadi

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

dan Spring Data Redis menggunakan byte tersebut sebagai kunci untuk kueri Redis.

Anda dapat menambahkan data dengan Spring Data Redis dan menanyakannya menggunakan redis-cli :

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

dan kemudian di 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"

Seperti yang Anda lihat, String dan Date diserialisasi menjadi beberapa byte gila yang mewakili objek serial Java.

Kode Anda menyarankan Anda ingin menyimpan kunci dan nilai berbasis String. Cukup atur StringRedisSerializer di RedisTemplate . Anda

Konfigurasi Java

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

Konfigurasi 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"/>

Output setelah menjalankan kode Anda terlihat seperti ini:

value
key
[value]

Spring Data Redis memiliki beberapa serializer menarik yang memungkinkan pertukaran pesan antara berbagai sistem. Anda dapat memilih salah satu dari serializer bawaan

  • JacksonJsonRedisSerializer
  • Jackson2JsonRedisSerializer
  • JdkSerializationRedisSerializer (default)
  • OxmSerializer
  • GenericToStringSerializer

atau buat sendiri.

Saya menggunakan Spring Data Redis 1.5.1.RELEASE dan jedis 2.6.2 untuk memverifikasi hasil pertanyaan Anda. HTH, Tandai

Baca lebih lanjut:

  • Redis Data Musim Semi:Serializer
  • Inti yang berisi contoh Anda


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. redis vs hazelcast

  2. Redis:Apakah ZADD lebih baik daripada O(logN) ketika elemen yang dimasukkan berada di awal atau akhir?

  3. Saran untuk solusi caching terdistribusi .NET sederhana

  4. dapatkan wadah buruh pelabuhan python untuk berinteraksi dengan wadah buruh pelabuhan redis

  5. Cara membaca beberapa Set yang disimpan di Redis menggunakan beberapa perintah atau skrip LUA