#chiroito ’s blog

Java を中心とした趣味の技術について

Infinispan をライブラリモードで使ってみる

今回は、Infinispan をライブラリモードでキャッシュを使用してみます。 デフォルト設定でキャッシュを作成し、そのキャッシュにmycacheという名前を付けます。そして、mycacheというキャッシュを取得します。最後にそのキャッシュにあるデータの件数やデータを取得・格納してみます。

ライブラリモードの環境構築についてはこちらを参照下さい。

Infinispan 10.1 の環境を構築する - #chiroito ’s blog

今回使うメソッドは以下のとおりです。

  • データの件数を取得するにはCache#size()メソッドを使用します。
  • データの取得にはCache#get(K)メソッドを使用し、Kには取得したいキーを指定します。
  • データの格納にはCache#put(K, V)メソッドを使用し、Kには格納したいキー、Vには格納したい値を指定します。
import org.infinispan.Cache;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.manager.DefaultCacheManager;
import org.infinispan.manager.EmbeddedCacheManager;

import java.io.IOException;

public class EmbeddedSingleSample {

    public static void main(String[] args) {

        // ライブラリモードでやる時のおまじないです。
        // ここではauto closeされるので、tryで囲わない場合は自分でcloseしてください。
        try (EmbeddedCacheManager manager = new DefaultCacheManager()) {

            // キャッシュを定義(作成)します
            manager.defineConfiguration("mycache", new ConfigurationBuilder().build());

            // キャッシュを取得します
            Cache<String, String> cache = manager.getCache("mycache");

            // キャッシュのサイズを出力します。
            System.out.println("Cache size is " + cache.size());

            // キャッシュに入れてないデータがない事を確認します。
            System.out.println("Value is " + cache.get("key"));

            // キャッシュにデータを入れます。
            cache.put("key", "value");

            // キャッシュのサイズを出力します。
            System.out.println("Cache size is " + cache.size());

            // キャッシュに入れたデータを確認します
            System.out.println("Value is " + cache.get("key"));

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

出力結果は以下のとおりになります。最初のデータの件数は0で、値を取っても値がないのでnullが返されます。次にデータを投入してから同様の処理をします。すると、データの件数は1件になり、値を取るとvalueという値が返されています。

3 16, 2020 4:44:42 午後 org.infinispan.factories.GlobalComponentRegistry preStart
INFO: ISPN000128: Infinispan version: Infinispan 'Turia' 10.1.3.Final
Cache size is 0
Value is null
Cache size is 1
Value is value