sql >> Base de Datos >  >> NoSQL >> Redis

spring-data-redis redisTemplate Exception

De forma predeterminada, RedisTemplate usa un JdkSerializationRedisSerializer, por lo que si hiciera un "conjunto", haría que su Long se viera así en 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 funciona porque Redis siempre devuelve un Long de esa operación, por lo que RedisTemplate no intenta deserializar el resultado. Sin embargo, el resultado de "get" pasa por el proceso de deserialización, que espera un formato como el anterior.

Puede resolver esto usando un serializador de valor diferente en su RedisTemplate:

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

O pruebe la clase RedisAtomicLong que viene con spring-data-redis.