Redis
 sql >> база данни >  >> NoSQL >> Redis

Защо данните се съхраняват със странни ключове в Redis, когато използвате Jedis с Spring Data?

Добре, потърсих в Google известно време и намерих помощ на http://java.dzone.com/articles/spring-data-redis.

Това се случи заради сериализацията на Java.

Ключовият сериализатор за redisTemplate трябва да бъде конфигуриран за StringRedisSerializer т.е. така:

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

Сега ключът в redis е vc:501381 .

Или както казва @niconic, можем също да зададем самия сериализатор по подразбиране на сериализатора на низове, както следва:

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

което означава, че всички наши ключове и стойности са низове. Забележете обаче, че това може да не е за предпочитане, тъй като може да искате вашите стойности да не са само низове.

Ако вашата стойност е обект на домейн, тогава можете да използвате Jackson serializer и да конфигурирате сериализатор, както е споменато тук, т.е. по следния начин:

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

и конфигурирайте своя шаблон като:

<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. Време на създаване на ключа в redis

  2. Как да получа всички чакащи задачи в опашката на laravel на Redis?

  3. Има ли команда в Redis за HASH структура от данни, подобна на MGET?

  4. Създаване на Redis слушател - възможно в php?

  5. Забавено изпълнение/планиране с Redis?