sql >> Database >  >> NoSQL >> Redis

Waarom worden gegevens opgeslagen met rare sleutels in Redis bij gebruik van Jedis met Spring Data?

Oké, ik heb een tijdje gegoogled en hulp gevonden op http://java.dzone.com/articles/spring-data-redis.

Het gebeurde vanwege Java-serialisatie.

De key serializer voor redisTemplate moet worden geconfigureerd als StringRedisSerializer d.w.z. als volgt:

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

Nu is de sleutel in redis vc:501381 .

Of zoals @niconic zegt, we kunnen de standaard serializer zelf ook als volgt instellen op de string serializer:

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

wat betekent dat al onze sleutels en waarden strings zijn. Houd er echter rekening mee dat dit misschien niet de voorkeur heeft, omdat u misschien wilt dat uw waarden niet alleen maar tekenreeksen zijn.

Als uw waarde een domeinobject is, kunt u Jackson-serializer gebruiken en een serializer configureren zoals hier vermeld, d.w.z. als volgt:

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

en configureer uw sjabloon als:

<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. mongod HostnameCanonicalizationWorker-fout op OS X

  2. Azure DataBricks Stream foreach mislukt met NotSerializableException

  3. Is er een limiet op het aantal argumenten dat redis-commando's zoals ZADD of HMGET aankunnen?

  4. Hoe u op de juiste manier door een groot json-bestand kunt bladeren