sql >> Databáze >  >> NoSQL >> Redis

spring-data-redis redisTemplate Výjimka

Ve výchozím nastavení používá RedisTemplate JdkSerializationRedisSerializer, takže pokud uděláte "set", bude vaše Long vypadat v Redis asi takto:

"\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 funguje, protože Redis vždy vrací Long z této operace, takže RedisTemplate se nepokouší o deserializaci výsledku. Výsledek „get“ však prochází procesem deseralizace, který očekává formát jako výše.

Můžete to vyřešit použitím jiného serializátoru hodnot v RedisTemplate:

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

Nebo vyzkoušejte třídu RedisAtomicLong, která přichází s spring-data-redis.



  1. Optimalizace výkonu Nodejs

  2. Mongo rozhraní

  3. Je možné získat pole v pořadí projekce v Agregation Frameworks mongo

  4. MongoDB není autorizován pro dotaz - kód 13