2012-09-05 6 views
15

Sto usando Jedis come client java per connettersi ai server Redis.Jedis può ottenere/impostare un POJO Java?

Domanda 1: Sembra che non ci sia alcun metodo per ottenere/impostare l'oggetto <? estende Serializable>? Tutti i valori devono essere String o byte []?

Altri client come "JRedis" e Spymemcache (per server memcached) potrebbero.

Domanda 2: Se utilizzo ShardedJedis, non è possibile impostare auth/password? Mentre la classe di Jedis può (usando auth (password String)).

risposta

14

Rispetto Domanda 1: Jedis non gestirà POJO. Dovresti serializzare su una stringa o su un byte [] e usare jedis per farlo, sebbene non raccomanderò di memorizzare i tuoi oggetti java serializzati, dato che non sarai in grado di usare tutte le funzionalità di Redis. Un approccio diverso sarebbe quello di utilizzare qualcosa come un mappatore di hash di oggetti, come JOhm.

Rispetto Domanda 2: ShardedJedis supporta solo i comandi eseguiti su una singola chiave. Questo per garantire l'atomicità. Se si desidera eseguire un comando specifico su un redis specifico, è necessario utilizzare shardedJedis.getShard('someky') che restituirà un'istanza Jedis che è possibile utilizzare. Un altro modo per gestire questo, quello consigliato, è specificare la password nelle istanze JedisShardInfo. È possibile vedere ed esempio in questo tests.

+5

@xertorthio: Grazie per aver condiviso il link per il progetto JOhm, alcuni sembrano interessanti! Tuttavia, quando si menziona "Non consiglierò di memorizzare i tuoi oggetti java serializzati, poiché non sarai in grado di utilizzare tutte le funzionalità di Redis" a quali altre interessanti funzionalità di Redis ti stai riferendo? –

+0

@Nishant Immagino che intendesse cose come INCR per fare cambiamenti atomici ai tuoi dati. –

+0

sembra che il progetto johm non sia attivo. ecco un fork attivo di quel progetto: [johm] (https://github.com/agrison/johm) – WorM

3

Risposta alla domanda 1:

Redisson (framework basato Redis per Java) può lavorare con gli oggetti POJO. E non è necessario serializzare/deserializzare l'oggetto da solo ogni volta e lavorare con le connessioni (acquisizione/rilascio). È tutto fatto da Redisson.

Ecco esempio:

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

oppure è possibile utilizzare LiveObjectService.

Redisson supporta molti codec popolari come Jackson JSON, Avro, Smile, CBOR, MsgPack, Kryo, FST, LZ4, Snappy e JDK Serialization.

Problemi correlati