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

Mengapa data disimpan dengan kunci aneh di Redis saat menggunakan Jedis dengan Spring Data?

Oke, googling sebentar dan temukan bantuan di http://java.dzone.com/articles/spring-data-redis.

Itu terjadi karena serialisasi Java.

Serializer kunci untuk redisTemplate perlu dikonfigurasi ke StringRedisSerializer yaitu seperti ini:

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

Sekarang kunci dalam redis adalah vc:501381 .

Atau seperti kata @niconic, kita juga bisa mengatur serializer default itu sendiri ke string serializer sebagai berikut:

<bean 
    id="redisTemplate" 
    class="org.springframework.data.redis.core.RedisTemplate"
    p:connection-factory-ref="jedisConnectionFactory" 
    p:defaultSerializer-ref="stringRedisSerializer"
/>

yang berarti semua kunci dan nilai kami adalah string. Namun perhatikan bahwa ini mungkin tidak disukai, karena Anda mungkin ingin nilai Anda bukan hanya string.

Jika nilai Anda adalah objek domain, maka Anda dapat menggunakan serializer Jackson dan mengkonfigurasi serializer seperti yang disebutkan di sini yaitu seperti ini:

<bean id="userJsonRedisSerializer" class="org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer">
    <constructor-arg type="java.lang.Class" value="com.mycompany.redis.domain.User"/>
</bean>

dan konfigurasikan template Anda sebagai:

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana mengonfigurasi redis-cluster saat menggunakan spring-data-redis 1.7.0.M1

  2. Spring Boot dengan Kesalahan Serialisasi Sesi/Redis dengan Kredensial Ldap Direktori Aktif yang Buruk

  3. Flask:menyebarkan pekerjaan pekerja latar belakang (rq, redis)

  4. Bekerja dengan dua instance redis terpisah dengan sidekiq?

  5. Mengetahui kapan pekerja resque telah menyelesaikan pekerjaan