web-dev-qa-db-ja.com

JedisはJava POJOを取得/設定できますか?

Redisサーバーに接続するためのJavaクライアントとしてJedisを使用しています。

質問1:オブジェクトを取得/設定するメソッドがないようです<? Serializableを拡張>?すべての値はStringまたはbyte []である必要がありますか?

「JRedis」やSpymemcache(memcachedサーバー用)などの他のクライアントも可能です。

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

17
hongtium

質問1について:JedisはPOJOを処理しません。文字列またはbyte []に​​シリアル化し、jedisを使用してこれを行う必要がありますが、すべてのRedisを使用できるわけではないため、シリアル化されたJavaオブジェクトを保存することはお勧めしません。クールな機能。別のアプローチは、 JOhm のようなオブジェクトハッシュマッパーのようなものを使用することです。

質問2について:ShardedJedisは、単一のキーで実行されるコマンドのみをサポートします。これは原子性を保証するためです。特定のredisで特定のコマンドを実行する場合は、shardedJedis.getShard('someky')を使用する必要があります。これにより、使用できるJedisインスタンスが返されます。これを処理する別の方法、推奨される方法は、JedisShardInfoインスタンスでパスワードを指定することです。 tests でこの例を見ることができます。

17
xetorthio

質問1への回答:

Redisson (Java用のRedisベースのフレームワーク)はPOJOオブジェクトを処理できます。また、オブジェクトを毎回自分でシリアル化/逆シリアル化し、接続を操作する(取得/解放する)必要はありません。それはすべてRedissonによって行われます。

次に例を示します。

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

または、 LiveObjectService を使用できます。

Redissonは、Jackson JSONAvroSmileCBORMsgPackKryoFSTLZ4Snappy、およびJDK Serialization

4