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

spring-data-redis redisTemplate изключение

По подразбиране RedisTemplate използва JdkSerializationRedisSerializer, така че ако сте направили „настройка“, това ще направи вашия Long да изглежда по следния начин в 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 работи, защото Redis винаги връща Long от тази операция, така че RedisTemplate не се опитва да десериализира резултата. Резултатът от „get“ обаче преминава през процеса на десериализация, който очаква формат като горния.

Можете да разрешите това, като използвате различен сериализатор на стойности във вашия RedisTemplate:

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

Или опитайте класа RedisAtomicLong, който идва с spring-data-redis.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Настройка на ElastiCache Redis с Elastic BeanStalk + Django

  2. Използване на Redis за опашки за множество Laravel приложения на един сървър

  3. Как да използвате сортирани списъци на Redis

  4. Създаване на функция за преглед без връщане на отговор в Flask

  5. Актуализация на стойността на Redis