Может ли 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
.