2012-09-05 9 views
15

Redisサーバーに接続するためにJedisをJavaクライアントとして使用しています。JedisはJava POJOを取得/設定できますか?

質問1:オブジェクトを取得/設定する方法がないようです。<? Serializable>を拡張しますか?すべての値はStringまたはbyte []でなければなりません。

「JRedis」やSpymemcache(memcached Serverの場合)などの他のクライアントも可能です。

質問2: ShardedJedisを使用すると、認証/パスワードを設定できません。 Jedisのクラスは(auth(String password)を使用して)行うことができます。

答えて

14

ご質問1:JedisはPOJOを処理しません。文字列またはバイト[]にシリアライズしてjedisを使用してください。ただし、すべてのRedisクール機能を使用することはできないため、Javaオブジェクトをシリアル化して保存することはお勧めしません。別のアプローチは、JOhmのようなオブジェクトハッシュマッパーのようなものを使用することです。

Regard Question 2:ShardedJedisは、単一のキーで実行されるコマンドのみをサポートします。これは、アトミック性を保証するためです。特定のredisで特定のコマンドを実行する場合は、shardedJedis.getShard('someky')を使用して、使用可能なJedisインスタンスを返します。 これを処理するもう1つの方法は、JedisShardInfoインスタンスでパスワードを指定することです。 これは、testsでご覧になれます。 1を質問する

+5

@ xertorthio:JOhmプロジェクトのリンクをお寄せいただきありがとうございます。しかし、「Redisのすべての機能を使用できないため、Javaオブジェクトを直列化して保存することはお勧めしません」と言えば、他のRedisのクールな機能を参照していますか? –

+0

@Nishant私は彼がINCRのようなものをあなたのデータに原子的な変更を加えることを意味したと思います。 –

+0

johmプロジェクトがアクティブではないようです。ここにはそのプロジェクトのアクティブなフォークがあります:[johm](https://github.com/agrison/johm) – WorM

3

回答:

Redisson(Java用のRedisベースのフレームワーク)は、POJOのオブジェクトを操作することができます。また、毎回自分でオブジェクトをシリアライズ/デシリアライズする必要はなく、接続(取得/解放)を行うこともできます。それはすべてレディソンによって行われます。

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

か、LiveObjectServiceを使用することができます。ここでは

は一例です。

RedissonはJackson JSONAvroSmileCBORMsgPackKryoFSTLZ4SnappyJDK Serializationのような多くの人気のコーデックをサポートしています。

関連する問題