Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Dlaczego dane są przechowywane w Redis z dziwnymi kluczami podczas korzystania z Jedis z Spring Data?

Ok, poszukałem przez chwilę i znalazłem pomoc na http://java.dzone.com/articles/spring-data-redis.

Stało się to z powodu serializacji Javy.

Serializator kluczy dla redisTemplate musi być skonfigurowany na StringRedisSerializer czyli tak:

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

Teraz klucz w redis to vc:501381 .

Lub jak mówi @niconic, możemy również ustawić domyślny serializator na serializator ciągów w następujący sposób:

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

co oznacza, że ​​wszystkie nasze klucze i wartości są ciągami. Zauważ jednak, że może to nie być preferowane, ponieważ możesz chcieć, aby Twoje wartości nie były tylko ciągami.

Jeśli twoją wartością jest obiekt domeny, możesz użyć serializatora Jackson i skonfigurować serializator, jak wspomniano tutaj, tj. W ten sposób:

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

i skonfiguruj swój szablon jako:

<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. Nadużywanie cURL do komunikacji z Redis

  2. Zapytania wielopolowe na Redis przy użyciu Redis Spring

  3. Wiele instancji Redis

  4. Enkapsulacja Unicode z redis

  5. Jak sprawić, by Redis zaczął działać w Heroku?