Может ли Jedis получить/установить Java POJO?

Я использую Jedis в качестве java-клиента для подключения к Redis Servers.

Вопрос 1: Кажется, что нет способа получить/установить Object <? расширяет Serializable > ? Все значения должны быть String или byte []?

Другие клиенты, такие как "JRedis" и Spymemcache (для сервера memcached), могут.

Вопрос 2: Если я использую ShardedJedis, он не может установить auth/password? Хотя класс Jedis может (используя auth (пароль String)).

Ответы

Ответ 1

Рассматривать вопрос 1: Джедис не будет обрабатывать POJO. Вы должны сериализовать строку или байт [] и использовать jedis для этого, хотя я не буду рекомендовать хранить ваши объекты Java, сериализованные, так как вы не сможете использовать все функции Redis cool. Другой подход - использовать что-то вроде объектно-хэш-картографа, например JOhm.

Рассматривать вопрос 2: ShardedJedis будет поддерживать только команды, которые запускаются на одном ключе. Это должно гарантировать атомарность. Если вы хотите запустить определенную команду для определенного redis, вы должны использовать shardedJedis.getShard('someky'), который вернет экземпляр Jedis, который вы можете использовать. Другой способ справиться с этим, рекомендуется, указать пароль в экземплярах JedisShardInfo. Вы можете видеть и пример этого в tests.

Ответ 2

Ответ на вопрос 1:

Redisson (Redis based framework для Java) может работать с объектами POJO. И вам не нужно каждый раз сериализовать/десериализовать объект и работать с соединениями (приобретать/выпускать). Все это сделано Редиссоном.

Вот пример:

RBucket<AnyObject> bucket = redisson.getBucket("anyObject");
// set an object
bucket.set(new AnyObject());
// get an object
AnyObject myObject = bucket.get();

или вы можете использовать LiveObjectService.

Redisson поддерживает множество популярных кодеков, таких как Jackson JSON, Avro, Smile, CBOR, MsgPack, Kryo, FST, LZ4, Snappy и JDK Serialization.