sql >> Database >  >> NoSQL >> Redis

spring-data-redis redisTemplate Exception

Standaard gebruikt RedisTemplate een JdkSerializationRedisSerializer, dus als je een "set" zou doen, zou je Long er in Redis ongeveer zo uitzien:

"\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 werkt omdat Redis altijd een Long retourneert van die bewerking, dus RedisTemplate probeert niet om het resultaat te deserialiseren. Het resultaat van "get" doorloopt echter het deserialisatieproces, dat een formaat zoals het bovenstaande verwacht.

U kunt dit oplossen door een andere waarde-serializer op uw RedisTemplate te gebruiken:

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

Of probeer de klasse RedisAtomicLong die bij spring-data-redis wordt geleverd.



  1. Controleer het bestaan ​​van verzamelingen in MongoDB

  2. Is er een conventie om verzamelingen een naam te geven in MongoDB?

  3. Vervaldatum toevoegen aan Redis Cache

  4. Rails aangepaste omgeving Resque.enqueue creëert geen banen