2012-09-05 10 views
15

Estoy usando Jedis como el cliente de Java para conectarme a los Servidores Redis.¿Puede Jedis obtener/establecer un POJO de Java?

Pregunta 1: Parece que no hay un método para obtener/establecer el objeto <? extiende Serializable>? Todos los valores deben ser Cadena o byte []?

Otros clientes como "JRedis" y Spymemcache (para servidor de memcached) podrían.

Pregunta 2: Si utilizo ShardedJedis, ¿no puedo establecer la autenticación/contraseña? Mientras que la clase Jedis puede (usando auth (contraseña de cadena)).

Respuesta

14

Regard Pregunta 1: Jedis no manejará POJOs. Debe serializar a una cadena o byte [] y usar jedis para hacer eso, aunque no recomendaré almacenar sus objetos java serializados, ya que no podrá usar todas las funciones de Redis cool. Un enfoque diferente sería usar algo como un asignador de hash de objetos, como JOhm.

Pregunta 2: ShardedJedis solo admitirá comandos que se ejecutan en una sola clave. Esto es para garantizar la atomicidad. Si desea ejecutar un comando específico en un redis específico, debe usar shardedJedis.getShard('someky'), que devolverá una instancia de Jedis que puede usar. Otra forma de manejar esto, la recomendada, es especificar su contraseña en las instancias JedisShardInfo. Puede ver y ejemplo de esto en el tests.

+5

@xertorthio: Gracias por compartir el enlace para el proyecto JOhm, ¡parece interesante! Sin embargo, cuando mencionas "No recomendaré almacenar tus objetos Java serializados, ya que no podrás usar todas las funciones geniales de Redis", ¿a qué otras características interesantes de Redis te refieres? –

+0

@Nishant Supongo que quiso decir cosas como INCR para hacer cambios atómicos en sus datos. –

+0

parece que el proyecto johm no está activo. aquí hay una bifurcación activa de ese proyecto: [johm] (https://github.com/agrison/johm) – WorM

3

respuesta a la pregunta 1:

Redisson (marco basado Redis para Java) puede trabajar con objetos POJO. Y no necesita serializar/deserializar el objeto usted mismo cada vez y trabajar con conexiones (adquirir/liberar). Todo lo hace Redisson.

Aquí es ejemplo:

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

o puede utilizar LiveObjectService.

redisson soporta muchos códecs populares como Jackson JSON, Avro, Smile, CBOR, MsgPack, Kryo, FST, LZ4, Snappy y JDK Serialization.

Cuestiones relacionadas