sql >> Databasteknik >  >> NoSQL >> Redis

spring-data-redis redisTemplate Undantag

Som standard använder RedisTemplate en JdkSerializationRedisSerializer, så om du gjorde en "set" skulle det få din Long att se ut ungefär så här i 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 fungerar eftersom Redis alltid returnerar en Long från den operationen, så RedisTemplate försöker inte deserialisera resultatet. Resultatet av "get" går dock igenom deserialiseringsprocessen, som förväntar sig ett format som ovan.

Du kan lösa detta genom att använda ett annat värde serializer på din RedisTemplate:

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

Eller prova RedisAtomicLong-klassen som kommer med spring-data-redis.



  1. Använd mongoexport med en --query för ISODate

  2. delar IO-objekt i flera nodinstanser

  3. Finns det någon låsmekanism i Azure Redis Cache när du uppdaterar ett objekt?

  4. Multi-samling, multi-dokument "transaktioner" i MongoDB