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.