sql >> Database teknologi >  >> NoSQL >> Redis

Få Set-værdi fra Redis ved hjælp af RedisTemplate

Kort sagt

Du skal konfigurere serializers.

Forklaring

Redis-skabelonen bruger serializers til nøgler, værdier og hashnøgler/værdier. Serializers bruges til at konvertere Java-inputtet til den repræsentation, der er gemt i Redis. Hvis du ikke konfigurerer noget, er serializeren standard til JdkSerializationRedisSerializer . Så hvis du beder om en nøgle key i din Java-kode konverterer serializeren den til

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

og Spring Data Redis bruger disse bytes som nøglen til at forespørge Redis.

Du kan tilføje data med Spring Data Redis og forespørge på dem ved hjælp af redis-cli :

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

og derefter i 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"

Som du kan se, er strengen og datoen serialiseret til nogle skøre bytes, der repræsenterer et Java-serialiseret objekt.

Din kode antyder, at du vil gemme strengbaserede nøgler og værdier. Indstil bare StringRedisSerializer i din RedisTemplate

Java-konfiguration

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

XML-konfiguration

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

Outputtet efter at have kørt din kode ser således ud:

value
key
[value]

Spring Data Redis har nogle interessante serializers, der tillader beskedudveksling mellem forskellige systemer. Du kan vælge enten fra de indbyggede serializers

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

eller opret din egen.

Jeg brugte Spring Data Redis 1.5.1.RELEASE og jedis 2.6.2 til at verificere resultatet af dit spørgsmål. HTH, Mark

Læs mere:

  • Spring Data Redis:Serializers
  • Genstand, der indeholder dit eksempel


  1. tilpasset redis-klient kompilering mislykkes

  2. Den nye måde at administrere Open Source-databaser på

  3. MongoDB $sekund

  4. phpredis på windows 7 64bit xampp