17.2. キャッシュストアの設定


17.2.1. キャッシュストアの設定

キャッシュストアはチェーンで設定されます。キャッシュの読み取り操作は、データの有効な null 以外の要素が見つかるまで、設定される順番でそれぞれのキャッシュストアをチェックします。書き込み操作は、ignoreModifications 要素が特定のキャッシュストアに対して "true" にされない限り、すべてのキャッシュストアに影響を与えます。

17.2.2. XML を使用したキャッシュストアの設定 (ライブラリーモード)

次の例は、JBoss Data Grid のライブラリーモードで XML を使用したキャッシュストアの設定を示しています。

手順17.1 XML を使用したキャッシュストアの設定

  1. 新しいキャッシュストアの作成

    passivationshared、および preload 設定を指定して、新規のキャッシュストアを作成します。
    1. passivation は Red Hat JBoss Data Grid がストアと通信する方法に影響を与えます。パッシベーションは、インメモリーキャッシュからオブジェクトを削除し、システムまたはデータベースなどの 2 次的なデータストアに書き込みます。パッシベーションはデフォルトで false です。
    2. shared は、キャッシュストアが異なるキャッシュインスタンスによって共有されていることを示します。例えば、クラスター内のすべてのインスタンスが、同じリモートの共有データベースと通信するために同じ JDBC 設定を使用する場合があります。shared は、デフォルトで false になります。true に設定すると、異なるキャッシュインスタンスによって重複データがキャッシュストアに書き込まれることが避けられます。
    3. preload はデフォルトでは false に設定されます。true に設定されると、キャッシュストアに保存されるデータは、キャッシュが起動するとメモリーにプリロードされます。これにより、キャッシュストアのデータが起動後すぐに利用できるようになり、データのレイジーなロードの結果としてキャッシュ操作の遅れを防ぐことができます。プリロードされたデータは、ノード上でローカルにのみに保存され、プリロードされたデータのレプリケーションや分散はありません。Red Hat JBoss Data Grid は、エビクションのエントリーの最大設定数のみをプリロードします。
    <persistence passivation="false" shared="false" preload="true">
    Copy to Clipboard Toggle word wrap
  2. 永続性とパージのセットアップ

    1. fetchPersistentState は、キャッシュの永続ステートを取り込むかどうかを決定し、クラスターに参加する際にこれをローカルキャッシュストアに適用します。キャッシュストアが共有される場合、キャッシュが同じキャッシュストアにアクセスする際に、fetch persistent 状態は無視されます。複数のキャッシュストアがこのプロパティーを true に設定する場合にキャッシュサービスを起動すると、設定の例外がスローされます。fetchPersistentState プロパティーはデフォルトでは false です。
    2. purgeSynchronously は、エクスパレーションをエビクションスレッドで発生させるかどうかを制御します。true に設定されると、エビクションスレッドは、返されるものを即時にもたらすのではなく、パージが終了するまでブロックします。purgeSychronously プロパティーはデフォルトで false に設定されます。キャッシュストアが マルチスレッドパージをサポートする場合、期限の切れたエントリーを削除するために purgeThreads が使用されます。purgeThreads は、デフォルトで 1 に設定されます。マルチスレッドパージがサポートされているかを判断するには、キャッシュストアの設定を確認します。
    3. ignoreModifications は、書き込み操作を共有キャッシュストアではなく、ローカルファイルキャッシュストアに許可することで、書き込みメソッドが特定のキャッシュストアにプッシュされるかどうかを決定します。特定の場合に、一時的なアプリケーションデータは、インメモリーキャッシュと同じサーバー上のファイルベースのキャッシュストアにのみ存在します。例えば、これはネットワーク内のすべてのサーバーによって使用される追加の JDBC ベースのキャッシュストアで適用されます。ignoreModifications はデフォルトではfalse です。
    <persistence passivation="false" shared="false" preload="true">
       <fileStore
               fetchPersistentState="true"
               purgerThreads="3"
               purgeSynchronously="true"
               ignoreModifications="false"
               purgeOnStartup="false"
               location="${java.io.tmpdir}" />
    Copy to Clipboard Toggle word wrap
  3. 非同期設定

    これらの属性は、それぞれのキャッシュストアに固有の側面を設定します。例えば、location 属性は、SingleFileStore がデータが含まれるファイルを維持する場所を指します。他のストアには、さらに複雑な設定が必要な場合があります。
    <persistence passivation="false" shared="false" preload="true">
       <fileStore
               fetchPersistentState="true"
               purgerThreads="3"
               purgeSynchronously="true"
               ignoreModifications="false"
               purgeOnStartup="false"
               location="${java.io.tmpdir}" >
          <async
               enabled="true"
               flushLockTimeout="15000"
               threadPoolSize="5" />
       </fileStore>
    Copy to Clipboard Toggle word wrap
  4. シングルトンと Push 状態の設定

    1. singletonStore は、クラスター内の 1 つのノードのみによって変更が保存されるのを可能にします。このノードはコーディネーターと呼ばれます。コーディネーターは、インメモリー状態のキャッシュをディスクにプッシュします。この機能は、すべてのノードの enabled 属性を true に設定することによりアクティベートされます。shared パラメーターは、singletonStore を有効にした状態で同時に定義することはできません。enabled 属性はデフォルトでは false です。
    2. pushStateWhenCoordinator はデフォルトでは true に設定されます。true の場合、このプロパティーは、コーディネーターになったノードに、インメモリー状態を基礎となるキャッシュストアに転送させます。このパラメーターは、コーディネーターがクラッシュし、新規のコーディネーターが選択される場合に役に立ちます。
    <persistence passivation="false" shared="false" preload="true">
       <fileStore
               fetchPersistentState="true"
               purgerThreads="3"
               purgeSynchronously="true"
               ignoreModifications="false"
               purgeOnStartup="false"
               location="${java.io.tmpdir}" >
          <async
               enabled="true"
               flushLockTimeout="15000"
               threadPoolSize="5" />
          <singletonStore
               enabled="true"
               pushStateWhenCoordinator="true"
               pushStateTimeout="20000" />
       </fileStore>
    </persistence>
    Copy to Clipboard Toggle word wrap

17.2.3. プログラムを使用してキャッシュストアを設定

以下の例では、プログラムを使用してキャッシュストアを設定する方法について示しています。

手順17.2 プログラムを使用してキャッシュストアを設定

  1. 新規の設定ビルダーの作成

    ConfigurationBuilder を使用して、新規の設定オブジェクトを作成します。
    ConfigurationBuilder builder = new ConfigurationBuilder();
    builder.persistence()
    Copy to Clipboard Toggle word wrap
  2. パッシベーションの設定

    passivation は Red Hat JBoss Data Grid がストアと通信する方法に影響を与えます。パッシベーションは、インメモリーキャッシュからオブジェクトを削除し、システムまたはデータベースなどの 2 次的なデータストアに書き込みます。パッシベーションはデフォルトで false です。
    ConfigurationBuilder builder = new ConfigurationBuilder();
    builder.persistence()
        .passivation(false)
    Copy to Clipboard Toggle word wrap
  3. 共有のセットアップ

    shared は、キャッシュストアが異なるキャッシュインスタンスによって共有されていることを示します。例えば、クラスター内のすべてのインスタンスが、同じリモートの共有データベースと通信するために同じ JDBC 設定を使用する場合があります。shared は、デフォルトで false になります。true に設定すると、異なるキャッシュインスタンスによって重複データがキャッシュストアに書き込まれることが避けられます。
    ConfigurationBuilder builder = new ConfigurationBuilder();
    builder.persistence()
        .passivation(false)
        .shared(false)
    Copy to Clipboard Toggle word wrap
  4. プリロードのセットアップ

    preload はデフォルトでは false に設定されます。true に設定されると、キャッシュストアに保存されるデータは、キャッシュが起動するとメモリーにプリロードされます。これにより、キャッシュストアのデータが起動後すぐに利用できるようになり、データのレイジーなロードの結果としてキャッシュ操作の遅れを防ぐことができます。プリロードされたデータは、ノード上でローカルにのみに保存され、プリロードされたデータのレプリケーションや分散はありません。JBoss Data Grid は、エビクションのエントリーの最大設定数のみをプリロードします。
    ConfigurationBuilder builder = new ConfigurationBuilder();
    builder.persistence()
        .passivation(false)
        .shared(false)
        .preload(true)
    Copy to Clipboard Toggle word wrap
  5. キャッシュストアの設定

    addSingleFileStore() は、この設定用のキャッシュストアとして SingleFileStore を追加します。addStore メソッドを使用して追加できる、JDBC キャッシュストアなどの他のストアを作成することができます。
    ConfigurationBuilder builder = new ConfigurationBuilder();
    builder.persistence()
        .passivation(false)
        .shared(false)
        .preload(true)
        .addSingleFileStore()
    Copy to Clipboard Toggle word wrap
  6. 永続性のセットアップ

    fetchPersistentState は、キャッシュの永続ステートを取り込むかどうかを決定し、クラスターに参加する際にこれをローカルキャッシュストアに適用します。キャッシュストアが共有される場合、キャッシュが同じキャッシュストアにアクセスする際に、fetch persistent 状態は無視されます。複数のキャッシュストアがこのプロパティーを true に設定する場合にキャッシュサービスを起動すると、設定の例外がスローされます。fetchPersistentState プロパティーはデフォルトでは false です。
    ConfigurationBuilder builder = new ConfigurationBuilder();
    builder.persistence()
        .passivation(false)
        .shared(false)
        .preload(true)
        .addSingleFileStore()
            .fetchPersistentState(true)
    Copy to Clipboard Toggle word wrap
  7. パージのセットアップ

    purgeSynchronously は、エクスパレーションをエビクションスレッドで発生させるかどうかを制御します。true に設定されると、エビクションスレッドは、返されるものを即時にもたらすのではなく、パージが終了するまでブロックします。purgeSychronously プロパティーはデフォルトで false に設定されます。キャッシュストアが マルチスレッドパージをサポートする場合、期限の切れたエントリーを削除するために purgeThreads が使用されます。purgeThreads は、デフォルトで 1 に設定されます。マルチスレッドパージがサポートされているかを判断するには、キャッシュストアの設定を確認します。
    ConfigurationBuilder builder = new ConfigurationBuilder();
    builder.persistence()
        .passivation(false)
        .shared(false)
        .preload(true)
        .addSingleFileStore()
            .fetchPersistentState(true)
            .purgerThreads(3)
            .purgeSynchronously(true)
    Copy to Clipboard Toggle word wrap
  8. 変更の設定

    ignoreModifications は、書き込み操作を共有キャッシュストアではなく、ローカルファイルキャッシュストアに許可することで、書き込みメソッドが特定のキャッシュストアにプッシュされるかどうかを決定します。特定の場合に、一時的なアプリケーションデータは、インメモリーキャッシュと同じサーバー上のファイルベースのキャッシュストアにのみ存在します。例えば、これはネットワーク内のすべてのサーバーによって使用される追加の JDBC ベースのキャッシュストアで適用されます。ignoreModifications はデフォルトではfalse です。
    ConfigurationBuilder builder = new ConfigurationBuilder();
    builder.persistence()
        .passivation(false)
        .shared(false)
        .preload(true)
        .addSingleFileStore()
            .fetchPersistentState(true)
            .purgerThreads(3)
            .purgeSynchronously(true)
            .ignoreModifications(false)
    Copy to Clipboard Toggle word wrap
  9. 非同期設定

    これらの属性は、それぞれのキャッシュストアに固有の側面を設定します。例えば、location 属性は、SingleFileStore がデータが含まれるファイルを維持する場所を指します。他のストアには、さらに複雑な設定が必要な場合があります。
    ConfigurationBuilder builder = new ConfigurationBuilder();
    builder.persistence()
        .passivation(false)
        .shared(false)
        .preload(true)
        .addSingleFileStore()
            .fetchPersistentState(true)
            .purgerThreads(3)
            .purgeSynchronously(true)
            .ignoreModifications(false)
            .purgeOnStartup(false)
            .location(System.getProperty("java.io.tmpdir"))
            .async()
                .enabled(true)
                .flushLockTimeout(15000)
                .threadPoolSize(5)
    Copy to Clipboard Toggle word wrap
  10. シングルトンの設定

    singletonStore は、クラスター内の 1 つのノードのみによって変更が保存されるのを可能にします。このノードはコーディネーターと呼ばれます。コーディネーターは、インメモリー状態のキャッシュをディスクにプッシュします。この機能は、すべてのノードの enabled 属性を true に設定することによりアクティベートされます。shared パラメーターは、singletonStore を有効にした状態で同時に定義することはできません。enabled 属性はデフォルトでは false です。
    ConfigurationBuilder builder = new ConfigurationBuilder();
    builder.persistence()
        .passivation(false)
        .shared(false)
        .preload(true)
        .addSingleFileStore()
            .fetchPersistentState(true)
            .purgerThreads(3)
            .purgeSynchronously(true)
            .ignoreModifications(false)
            .purgeOnStartup(false)
            .location(System.getProperty("java.io.tmpdir"))
            .async()
                .enabled(true)
                .flushLockTimeout(15000)
                .threadPoolSize(5)
            .singletonStore()
               .enabled(true)
    Copy to Clipboard Toggle word wrap
  11. Push 状態のセットアップ

    pushStateWhenCoordinator はデフォルトでは true に設定されます。true の場合、このプロパティーは、コーディネーターになったノードに、インメモリー状態を基礎となるキャッシュストアに転送させます。このパラメーターは、コーディネーターがクラッシュし、新規のコーディネーターが選択される場合に役に立ちます。
    ConfigurationBuilder builder = new ConfigurationBuilder();
    builder.persistence()
        .passivation(false)
        .shared(false)
        .preload(true)
        .addSingleFileStore()
            .fetchPersistentState(true)
            .purgerThreads(3)
            .purgeSynchronously(true)
            .ignoreModifications(false)
            .purgeOnStartup(false)
            .location(System.getProperty("java.io.tmpdir"))
            .async()
                .enabled(true)
                .flushLockTimeout(15000)
                .threadPoolSize(5)
            .singletonStore()
               .enabled(true)
               .pushStateWhenCoordinator(true)
               .pushStateTimeout(20000);
    Copy to Clipboard Toggle word wrap

17.2.4. SKIP_CACHE_LOAD フラグについて

Red Hat JBoss Data Grid のリモートクライアントモードでは、キャッシュがキャッシュストアからプレロードされ、エビクションが無効な場合に、読み取り要求がメモリーに移動します。読み取り要求時にエントリーがメモリー内にないと、キャッシュストアがアクセスされ、読み取りパフォーマンスが影響を受けることがあります。
キーがメモリーにない場合にキャッシュストアの参照を回避するには、SKIP_CACHE_LOAD フラグを使用します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat