5.2. プログラムによる設定


ConfigurationBuilder クラスで新しい Configuration オブジェクトを作成し、Cache Manager でキャッシュ設定を定義します。

注記

このセクションの例では、クライアントと同じ JVM で実行する Cache Manager である EmbeddedCacheManager を使用します。

HotRod クライアントでキャッシュをリモートで設定するには、RemoteCacheManager を使用します。詳細は、HotRod のドキュメントを参照してください。

新しいキャッシュインスタンスの設定

以下の例では、新しいキャッシュインスタンスを設定します。

EmbeddedCacheManager manager = new DefaultCacheManager("infinispan-prod.xml");
Cache defaultCache = manager.getCache();
Configuration c = new ConfigurationBuilder().clustering() 1
  .cacheMode(CacheMode.REPL_SYNC) 2
  .build();

String newCacheName = "replicatedCache";
manager.defineConfiguration(newCacheName, c); 3
Cache<String, String> cache = manager.getCache(newCacheName);
1
新しい設定オブジェクトを作成します。
2
分散、同期キャッシュモードを指定します。
3
Configuration オブジェクトで replicatedCache という名前の新しいキャッシュを定義します。

既存設定からの新規キャッシュの作成

以下の例では、既存のキャッシュ設定から新しいキャッシュ設定を作成します。

EmbeddedCacheManager manager = new DefaultCacheManager("infinispan-prod.xml");
Configuration dcc = manager.getDefaultCacheConfiguration(); 1
Configuration c = new ConfigurationBuilder().read(dcc) 2
  .clustering()
  .cacheMode(CacheMode.DIST_SYNC) 3
  .l1()
  .lifespan(60000L) 4
  .build();
 
String newCacheName = "distributedWithL1";
manager.defineConfiguration(newCacheName, c); 5
Cache<String, String> cache = manager.getCache(newCacheName);
1
Cache Manager からデフォルトのキャッシュ設定を返します。この例では、infinispan-prod.xml はレプリケートされたキャッシュをデフォルトとして定義します。
2
デフォルトのキャッシュ設定をベースとして使用する新規の Configuration オブジェクトを作成します。
3
分散、同期キャッシュモードを指定します。
4
L1 ライフスパン設定を追加します。
5
Configuration オブジェクトで distributedWithL1 という名前の新しいキャッシュを定義します。
EmbeddedCacheManager manager = new DefaultCacheManager("infinispan-prod.xml");
Configuration rc = manager.getCacheConfiguration("replicatedCache"); 1
Configuration c = new ConfigurationBuilder().read(rc)
  .clustering()
  .cacheMode(CacheMode.DIST_SYNC)
  .l1()
  .lifespan(60000L)
  .build();
 
String newCacheName = "distributedWithL1";
manager.defineConfiguration(newCacheName, c);
Cache<String, String> cache = manager.getCache(newCacheName);
1
replicatedCache という名前のキャッシュ設定をベースとして使用します。

5.2.1. 設定オブジェクト

Data Grid は、プログラムによるキャッシュ設定に 2 つの抽象化を提供します。

GlobalConfigurationBuilder
すべてのキャッシュ定義に適用されるグローバル設定オブジェクトを構築します。
ConfigurationBuilder
キャッシュ定義に固有の設定オブジェクトを構築します。

グローバル設定

グローバル設定の例は、以下のように統計情報を有効にし、JMX または Cache Manager レベルで metrics エンドポイントを介してエクスポートすることです。

GlobalConfiguration globalConfig = new GlobalConfigurationBuilder()
  .cacheContainer().statistics(true)
  .metrics().gauges(true).histograms(true)
  .jmx().enable()
  .build();

キャッシュ設定

以下の例は、Data Grid キャッシュにさまざまな設定をプログラムで設定する方法を示しています。

  • 分散同期クラスター化されたキャッシュモードを設定します。

    Configuration config = new ConfigurationBuilder()
      .clustering()
        .cacheMode(CacheMode.DIST_SYNC)
        .l1().lifespan(25000L)
        .hash().numOwners(3)
      .build();
  • エビクションと有効期限を設定します。

    Configuration config = new ConfigurationBuilder()
               .memory()
                 .size(20000)
              .expiration()
                 .wakeUpInterval(5000L)
                 .maxIdle(120000L)
               .build();
  • 永続キャッシュストアを設定します。

    Configuration config = new ConfigurationBuilder()
       .persistence().passivation(false)
       .addSingleFileStore().location("/tmp").async().enable()
       .threadPoolSize(20).preload(false).shared(false).build();
  • トランザクションとロックを設定します。

    Configuration config = new ConfigurationBuilder()
      .locking()
        .concurrencyLevel(10000).isolationLevel(IsolationLevel.REPEATABLE_READ)
        .lockAcquisitionTimeout(12000L).useLockStriping(false)
        .versioning().enable().scheme(VersioningScheme.SIMPLE)
      .transaction()
        .transactionManagerLookup(new GenericTransactionManagerLookup())
        .recovery()
      .statistics()
      .build();
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.