web-dev-qa-db-ja.com

jedisの使用キャッシュ方法Javaオブジェクト

Redisの使用Javaクライアント ジェダイ
どうすればJavaオブジェクトをキャッシュできますか?

10
user3903521

オブジェクトをjson文字列として変換して保存してから、jsonを読み取り、オブジェクトに変換し直す必要があります。

そうするためにGsonを使用することができます。

//store
Gson gson = new Gson();
String json = gson.toJson(myObject);
jedis.set(key,json);

//restore
String json = jedis.get(key);
MyObject object=gson.fromJson(json, MyObject.class);
10
jeorfevre

オブジェクトを直接redisに保存することはできません。したがって、オブジェクトをStringに変換してから、Redisに配置します。そのためには、オブジェクトをシリアル化する必要があります。オブジェクトをByteArrayに変換し、エンコードアルゴリズム(base64encodingなど)を使用してStringとして変換し、Redisに保存します。プロセスを逆に取得しながら、デコードアルゴリズム(例:base64decoding)を使用して文字列をバイト配列に変換し、オブジェクトに変換します。

3

これを行うには、より便利なlibを使用することをお勧めします。 Redisson -これはJava用のRedisベースのフレームワークです。ジェダイに比べていくつかの利点があります

  1. 毎回自分でオブジェクトをシリアル化/逆シリアル化する必要はありません
  2. 自分で接続を管理する必要はありません
  3. Redisを非同期で操作できます

Redissonはあなたのためにそしてそれ以上にそれをします。 Jackson JSONAvroSmileCBORMsgPackKryoFSTLZ4SnappyおよびJDK Serialization

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