Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

spring-data-redis redisTemplate Exception

Theo mặc định, RedisTemplate sử dụng JdkSerializationRedisSerializer, vì vậy nếu bạn đã đặt một "bộ", nó sẽ làm cho Long của bạn trông giống như thế này trong 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 hoạt động vì Redis luôn trả về một Long từ thao tác đó, vì vậy RedisTemplate không cố gắng giải mã kết quả. Tuy nhiên, kết quả của "get" sẽ trải qua quá trình giải mã hóa, quá trình này mong đợi một định dạng như trên.

Bạn có thể giải quyết vấn đề này bằng cách sử dụng bộ tuần tự hóa giá trị khác trên RedisTemplate của mình:

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

Hoặc thử lớp RedisAtomicLong đi kèm với spring-data-redis.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. di chuyển phpRedis sang băm cụm và nhất quán

  2. AWS Lambda và ứng dụng khách Redis. Tại sao tôi gọi lại không được?

  3. Có thể làm gì bằng cách sử dụng các công việc nền không đồng bộ của CKAN?

  4. Thư viện Redis tốt nhất cho Java

  5. Microsoft.Extensions.Caching.Redis chọn cơ sở dữ liệu khác với db0