Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

spring-data-redis redisTemplate Exception

Secara default, RedisTemplate menggunakan JdkSerializationRedisSerializer, jadi jika Anda melakukan "set" itu akan membuat Long Anda terlihat seperti ini di 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 berfungsi karena Redis selalu mengembalikan Long dari operasi itu, jadi RedisTemplate tidak mencoba untuk membatalkan serialisasi hasilnya. Hasil dari "get", bagaimanapun, melewati proses deserialisasi, yang mengharapkan format seperti di atas.

Anda dapat mengatasi ini dengan menggunakan serializer nilai yang berbeda pada RedisTemplate Anda:

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

Atau coba kelas RedisAtomicLong yang disertakan dengan spring-data-redis.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. StackExchange.Redis - Penggunaan LockTake / LockRelease

  2. Terhubung ke AWS ElastiCache dengan Enkripsi Dalam Transit + Auth dari klien selain redis-cli+stunnel

  3. Gunakan Banyak DB Dengan Satu Skrip Redis Lua?

  4. Redisson, antrian / dequeu yang berfungsi. Strategi pemrosesan pesan/elemen pada penanganan pesan yang tidak lengkap pada sistem/pod shutdown

  5. LuaSocket, Lua 5.2 dan Redis