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

spring-data-redis wyjątek redisTemplate

Domyślnie RedisTemplate używa JdkSerializationRedisSerializer, więc jeśli zrobisz „ustawienie”, sprawi to, że Twój Long będzie wyglądał mniej więcej tak w Redis:

"\xac\xed\x00\x05sr\x00\x0ejava.lang.Long;\x8b\xe4\x90\xcc\x8f#\xdf\x02\x00\x01J\x00\x05valuexr\x00\x10java.lang.Number\x86\xac\x95\x1d\x0b\x94\xe0\x8b\x02\x00\x00xp\x00\x00\x00\x00\x00\x00\x00\x04"

IncrBy działa, ponieważ Redis zawsze zwraca Long z tej operacji, więc RedisTemplate nie próbuje deserializacji wyniku. Jednak wynik "get" przechodzi przez proces deserializacji, który oczekuje formatu takiego jak powyżej.

Możesz rozwiązać ten problem, używając innego serializatora wartości w swoim RedisTemplate:

redisTemplate.setValueSerializer(new GenericToStringSerializer<Long>(Long.class));

Lub wypróbuj klasę RedisAtomicLong, która jest dostarczana z spring-data-redis.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Konfiguracja wdrożenia Redis — replikacja master-slave

  2. Jak SignalR.Redis działa pod maską?

  3. Jak zainstalować RDBTools przy użyciu szablonu AWS CloudFormation?

  4. Foreman natychmiast kończy pracę

  5. Jak niszczyć miejsca pracy z kolejek pracowników resque?