使い方 NCache Spring Data Cachingとして

Java WebアプリケーションとAPI

みなさん、こんにちは。私の名前はスレイマンです。このビデオでは、 NCache Spring Data を使用して、キャッシュによってアプリケーションのパフォーマンスを向上させます。サンプルプロジェクトを用意しました。これは Spring Boot アプリケーションです。まず、Spring キャッシュを実装することから始めます。そして、Spring Boot のキャッシュ自動構成オプションを利用してこれを行います。

その時点でキャッシュされたデータはメモリに保存されます。そしてそれが終わったら、 NCacheそして、キャッシュデータがキャッシュサーバーに保存される仕組みについてもご説明します。

NCache アーキテクチャ

これは通常、キャッシュをエンタープライズ環境にデプロイする場合の構成です。アプリケーション層用に別の層があり、これはキャッシュクライアントとも呼ばれます。ここでクライアントアプリケーションが実行されます。次に、キャッシュサーバーを配置する別のキャッシング層があります。最後にデータベース層があります。私の構成は、この構造と非常によく似ています。

NCache エンタープライズ環境での展開
NCache エンタープライズ環境での展開

NCache Spring Dataのセットアップ

セットアップに進む前に、まずは私が作成したプロジェクトについて見ていきましょう。先ほども述べたように、これはSpring Bootアプリケーションで、簡単に言うと、こちらの製品オブジェクトに対してCRUD操作を実行するものです。

サンプルアプリケーション

HTMLページも作成していることに気づくでしょう。つまり、ユーザーインターフェースを使用してエンドポイントとやり取りします。プロダクトコントローラーに入ると、定義したエンドポイントが表示されます。 getProduct(), addProduct() (NAIST) と removeProduct()サービス層では、キャッシュが実装されていないことがわかります。リポジトリを見ると、Spring Data を使用していることがわかります。そのため、現時点ではクライアントアプリケーションはデータベースとのみやり取りしており、キャッシュとはやり取りしていません。それでは、その点について段階的に説明していきます。

Spring Data Cacheのアノテーション

  • Enable Cache
    @EnableCaching
  • キャッシュ取得
    @Cacheable(value="demoCache", key="#id", unless = "#result == null")
  • キャッシュプット
    @CachePut(value="demoCache", key="#product.productID")
  • キャッシュの削除
    @CacheEvict(value="demoCache", key="#id")

Enable Cache

最初のステップは、とても簡単なセットアップです。これらのアノテーションをクラスに追加するだけです。まず、 @EnableCache アノテーションです。メインクラスにこのアノテーションを追加します。Spring Bootに付属していると思われるSpringコンテキストサポートの依存関係を取り込んでいる場合は、このアノテーションにアクセスできるはずです。

@EnableCaching

キャッシュ取得

それが終わったら、サービスレイヤーに入ってキャッシュ可能なメソッドのアノテーションを追加します。コントローラークラスでこれを行う人もいますが、それは単に要件の問題です。それでは、 @キャッシュ可能作成した、または作成したいキャッシュの名前を渡します。ここでキー値を渡しますが、私の場合は、ここにあるメソッドパラメータである #id です。また、result が null でない限り、null の結果をキャッシュしないという条件も指定します。

@Cacheable(value = "demoCache", key = "#id", unless = "#result==null")

キャッシュプット

私たちの製品の場合、 @CachePut今回はIDがないのでキーは異なりますが、同じ値を渡します。そのため、製品IDへの参照を直接渡します。つまり、product.productIDとなります。

@CachePut(value = "demoCache", key = "#product.productID")

私の製品クラスでは、製品IDが主キーになっていることに気づくでしょう。それが私がそうしている理由です。

キャッシュの削除

最後に、削除の場合は @CacheEvict を使用します。ここでのキーは #id になります。

@CacheEvict(value = "demoCache", key = "#id")

これでほぼ完了です。これらのアノテーションを追加しただけです。現時点では、まだSpringのキャッシュを使用していることに注意してください。これはキャッシュのインスタンスを作成し、キャッシュデータをメモリに保存します。もちろん、私たちがやりたいことは、 NCache そして、代わりにデータをキャッシュサーバーに保存します。これは現在、アノテーションを使用して行われています。

XML宣言(オプション)

ソースコードを変更したくない場合は、XMLタグを外部ファイルに宣言することで、まったく同じ動作を実現できることもお見せしましょう。

  • キャッシュ取得
    <cache:cacheable method="getProduct" key="#id" unless="#result == null"/>
  • キャッシュプット
    <cache:cache-put method="addProduct" key="#product.productID"/>
  • キャッシュの削除
    <cache:cache-evict method="deleteProduct" key="#id"/>

ご覧のとおり、Cache Get、Cache Put、Cache Evict XML タグがあります。私は自分のプロジェクトの注釈を使うことにします。しかし、私がやりたいことは、XML の設定がどのようなものになるかをお見せすることです。 NCache XML設定のガイドがあるウェブサイトはこちらです。 プログラマー向けガイドこれは、ここのドキュメントセクションから来ていると思います。ガイドに移動して、次に Spring Integration オプションです。このセクションにあると思います。ここで宣言されたコントローラー クラスがあり、キャッシュ アノテーション付きのサービス メソッドがあります。そして最後に XML 宣言があります。

<!-- the service we want to make cacheable -->
<bean id="bookService" class="com.spring.service.BookService"/>

<!-- cache definitions -->
<cache:advice id="booksCacheAdvice" cache-manager="cacheManager">
    <cache:caching cache="demoCache">
        <cache:cacheable method="findBookByIsbn" key="#isbn"/>
    </cache:caching>
</cache:advice>

<app:config>
    <app:advisor advice-ref="booksCacheAdvice" pointcut="execution(* com.spring.service.BookService.*(..))"/>
</app:config>

ご覧のとおり、キャッシュアドバイスタグを渡し、キャッシュ名を指定し、キャッシュ可能なメソッドを渡し、キーは以前行っていたものと非常によく似ています。最後に、XMLキャッシュを有効にするためにアプリ設定タグを渡す必要があります。

Spring Dataの設定 NCache

先ほど申し上げたように、注釈にこだわります。それでは、実際に設定に移りましょう。 NCacheこの統合において。しかし、せっかくなので、簡単に見ていきましょう。 NCache 実際にはキャッシュクラスタです。すでにdemoCacheという名前でキャッシュが作成されていることをお見せしたいと思います。これは単一のサーバーノードですが、もちろんクラスタには複数の異なるサーバーを追加できます。これはDockerインスタンスにデプロイされています。私はこのようにしてこれに接続しています。

コンテナの実行

自分の統計情報をクリックしたときに、既存のデータが存在しないことを確認したい。完璧だ。つまり、最初からやり直すということだ。

ステップ1: 追加 NCache Springの依存関係

Spring Dataを設定するには NCache まず最初に、これを追加してください NCache Springの依存関係。この依存関係がどこにあるかを知りたい場合は、 NCache ウェブサイトにアクセスして、開発者向けJavaセクションに進みます。今やっていることは、Mavenセントラルリポジトリにアクセスして、依存関係の最新バージョンを見つけることです。ご覧のとおりです。 NCache Spring 5.3.6が最新バージョンです。

<dependency>
    <groupId>com.alachisoft.ncache</groupId>
    <artifactId>ncache-spring</artifactId>
    <version>5.3.6</version>
</dependency>

これをpom.xmlファイルにコピーします。Mavenの変更を同期します。そしてライブラリを再確認します。ご覧のとおり、 NCache クライアント、 NCache 実行時間と NCache 春、最高だ。

ステップ2:キャッシュ構成を指定する

次のステップは、キャッシュ構成を指定することです。 ncache-spring.xml ファイル。つまり、簡単に言うと、このファイル内で 1 つまたは複数のキャッシュを定義する必要があります。そして、これはアプリケーションがキャッシュのインスタンスを作成するために使用されます。そこで、これをリソースフォルダの下に定義します。このファイルの XML レイアウトについては、 NCache ウェブサイトにはこれに関するガイドがあります。そして、このセクションに移動すると、 キャッシュポリシーを設定するそして、これは既にdemoCacheという名前を使っています。なので、そのままコピーします。

<application-config default-cache-name="demoCache">
    <caches>
        <cache name="demoCache" ncacheid-instance="democache" priority="normal" expiration-type="absolute" expiration-period="200"/>
    </caches>
</application-config>

ご覧のとおり、他にもいくつかのオプションがあります。例えば、アイテムの優先度レベル、式の種類(絶対値、スライディング、なし)、そして有効期限(秒単位)などです。例えば、200に設定すると、この時間が経過した後にキャッシュアイテムが期限切れになるはずです。

ステップ3:CacheManager Beanの設定

  • Javaベースのアノテーション(推奨)
  • XMLベースの設定

このままにして、次のステップ、つまり最も重要なステップに進みましょう。キャッシュマネージャBeanを設定する必要があります。現在、Spring Bootの自動構成オプションを使用しているため、Springは独自のキャッシュマネージャインスタンスを作成します。私たちがやりたいことは、Springに注入される独自のキャッシュマネージャインスタンスを作成し、統合を完了することです。

Javaベースのアノテーション

これで、2 つの方法でこれを行うことができます。アノテーションを使用するか、XML でこれを行うことができます。アノテーションを使用する場合、クラスを作成して cache configuration という名前を付けます。名前は重要ではありません。これを Spring コンポーネントとしてマークします。そして、キャッシュマネージャインスタンスを返す単一のメソッドをここで宣言します。これは Spring フレームワークのインポートである必要があることに注意してください。そして、これも Bean としてアノテーションします。新しく作成したファイル、つまり ncache-spring.xml ファイルを指すリソースを定義します。ソースフォルダからこれをコピーします。次に、Spring 構成マネージャを定義します。これには、 NCache コード。これを先ほど定義したリソースに関連付けます。つまり、すべてを接続しているだけです。そして、 NCache キャッシュマネージャインスタンス。これは、このメソッドで返されたキャッシュマネージャインスタンスになります。これをSpring構成マネージャに関連付けます。最後に、キャッシュマネージャインスタンスを返します。これで、アノテーションによる設定は完了です。

Javaベースのアノテーション
Javaベースのアノテーション

XMLベースの設定

XMLでこれを実行する場合は、このクラスを定義する必要はありません。XMLファイルで2つの単一のBeanを定義するだけで済みます。1つはキャッシュマネージャの名前です。キャッシュマネージャBeanをここにコピーします。そして、これはSpring構成マネージャオブジェクトを探していることに気づくでしょう。そのため、これを別のBeanとして定義する必要があります。このBeanもここに貼り付けます。 NCache 構成マネージャーは当然、ncache-spring.xml ファイルを指定する必要があります。つまり、以前行ったことと全く同じです。ただ、XML 形式になっているだけです。

<bean id="cacheManager" class="com.alachisoft.integrations.spring.NCacheCacheManager">
   <property name="springConfigurationManager" ref="NCacheConfigurationManager"/>
   <property name="logFilePath" value="C:\Program Files\NCache\log-files\CustomerDBSpringLogs"/>
</bean>
<bean id="NCacheConfigurationManager" class="com.alachisoft.integrations.spring.configuration.SpringConfigurationManager">
   <property name="configFile" value="ncache-spring.xml">
</bean>

ステップ4:キャッシュサーバーを指定する

それでは、注釈を使用しているので、この部分は一旦コメントアウトして、最後のステップである client.ncconf でのキャッシュサーバー指定に進みましょう。このファイルでは、キャッシュサーバーの IP アドレスと設定オプションを定義します。 NCache クライアントアプリケーションを実行しているマシンにインストールされている場合、このファイルは既に存在しているはずです。したがって、私の場合は、 NCache インストール済みです NCache インストールフォルダには、ご覧のとおり、このファイルが既に存在しているはずです。中身もお見せしましょう。ご覧のとおり、キャッシュの場所、キャッシュサーバーのIPアドレス、そしていくつかのオプションが指定されています。

キャッシュサーバーを指定してください
client.ncconfでキャッシュサーバーを指定します。

もしあなたが持っていない場合は NCache クライアントアプリケーションを使用しているマシンにインストールされている場合は、これを自分で作成する必要があります。そのため、その場合は、その内容をコピーして、同じ名前の新しいファイルをここに定義します。場所は特に重要ではありません。ここに内容を貼り付けるだけです。今必要なのは、指定することだけです。 NCache これを設定ファイルとして追加します。つまり、追加する必要があるコードは1つだけです。キャッシュ設定に追加します。キャッシュマネージャーのようなものです。 NCache client import .setConfigPath で、これをリソースフォルダに指定します。これで完了です。クライアントファイルがない場合は、 NCache インストールフォルダなので、コメントアウトします。でも、簡単に説明しておきたいです。これを行う理由は、デフォルトでは NCache インストールフォルダ内でそのクライアントファイルを探します。インストールフォルダがない場合は、この動作をオーバーライドする必要があります。もう一つ、キャッシュの自動構成オプションを無効にする必要があると思います。そこで、CacheAutoConfiguration.class を除外します。これで完璧です。これでアプリケーションを実行できます。

では、これが起動している間に、データベースをざっと見てデータがないことを確認してみます。完璧です、空です。これがロードされている間に、統計ページを開いてみましょう。localhost と並べて開いてみます。アプリケーションが起動して実行されています。完璧です、ここに表示されています。製品を追加したり、製品を取得したり、製品を削除したりできることがわかります。すでに定義したエンドポイントと同じものに従っています。これらのエンドポイントすべてにアクセスして、キャッシュサーバーをテストします。例として、3つの異なる製品を追加してみましょう。ここにランダムな値を追加します。最初の要求は、キャッシュに接続しようとするため、少し時間がかかることに注意してください。キャッシュのカウントが 1 つ増えていることがわかります。ここにもう 1 つの製品を追加します。キャッシュのカウントがこの動作を反映していることがわかります。完璧です。データベースをざっと見てみると、同様の挙動が見られるはずです。ここに追加された3つの項目が確認できます。

実行時に製品が追加されました。

さて、アイテム番号2を取得すると、データベースではなくキャッシュからこの値が取得されることを期待します。ご覧のように、ここに値があります。そして、これによりキャッシュからの1秒あたりのフェッチオプションがトリガーされます。つまり、期待どおりに動作しています。アイテム番号3を取得すると、まったく同じことが起こります。次に、ID番号1を削除すると、データベースとキャッシュサーバーの両方から削除されることを期待します。ご覧のように、キャッシュ内のカウントが減少します。データベースを更新しても、まったく同じ動作が見られることを期待します。完璧です。

デモを予約

皆さん、デモンストレーションは以上です。 NCache、 その 機能を使用 アプリケーションへの組み込み方法については、お問い合わせください。 デモを予約するこの動画をご覧いただき、誠にありがとうございました。

次はどうする?

お問い合わせ

電話

+1 214-619-2601 (米国)

+44 20 7993 8327 (英国)

©著作権 Alachisoft 2002 - . All rights reserved. NCache はダイヤテック株式会社の登録商標です。