JCacheプロバイダー NCache

NCache 分散型JCacheプロバイダーとして機能し、JavaアプリケーションがJSR 107準拠のキャッシュを利用してデータベースのボトルネックを解消し、水平方向にスケールすることを可能にします。JCacheは、Javaオブジェクトのメモリ内キャッシュに使用されるJavaベースのAPIです。これには、オブジェクトの作成、無効化、スプール、共有アクセス、そしてJava仮想マシン(JVM)間の一貫性維持も含まれます。

NCache は非常に強力で用途の広い分散キャッシュソリューションであり、膨大な機能とツールのセットが付属しています。 NCache JSR 107仕様の高性能実装を提供し、ミリ秒未満の遅延で分散キャッシュを必要とするJavaアプリケーションとの完全な互換性を保証します。この実装を活用することで、 NCacheのエンタープライズ グレードの機能を、アーキテクチャ上の摩擦なしに JCache 準拠の環境に導入できます。

JCacheインスタンスを初期化するには NCache?

キャッシュに対して操作を実行するには、JCacheインスタンスを作成する必要があります。 Javaでは、getCache()メソッドは、JCacheインスタンスを取得するための最も便利なメソッドのXNUMXつと見なされています。 次のコード例は、このメソッドを使用してキャッシュを初期化する方法を示しています。

/*Create an instance of JCache's caching provider to get JCacheManager's instance */
CachingProvider provider = Caching.getCachingProvider();
CacheManager manager = provider.getCacheManager();

/*Get a cache from manager via its string name.*/
javax.cache.Cache jCache = manager.getCache("myreplicatedcache");

JCacheでサポートされている基本的な操作は何ですか? NCache?

キャッシュが正常に初期化され、キャッシュハンドルを取得すると、次のようなキャッシュに対して多くの操作を実行できます。 追加, フェッチ, 更新, 削除する キャッシュからのデータ。

次のコード例は、キャッシュインスタンス(上記のコード例で作成したもの)を使用して、キャッシュに対して基本的な操作を実行する方法を示しています。

/*Adding data to the cache*/
Product product = fetchProductFromDB();
String key = "Product:" + product.getProductID();       
jCache.put(key, product);

/*Update data in the cache*/
product.setUnitsInStock(newValue); // updated units
jCache.replace(key, product);
	
/*Get data from the cache*/
Object item = jCache.get(key);
	
/*Remove data from the cache*/
Boolean result = jCache.remove(key);

JCacheはデータの有効期限をどのように管理しますか? NCache?

JCacheのもうXNUMXつの機能は データの有効期限 キャッシュデータは時間に基づいて期限切れになります。 JCacheは、XNUMXつの主要なタイプの有効期限をサポートします。 絶対有効期限 (NAIST) と スライド式の有効期限。 絶対有効期限では、キャッシュ内のデータは一定の時間間隔の後に期限切れになります。 スライディング有効期限では、キャッシュ内のデータは時間間隔の後に期限切れになりますが、この時間間隔は、このデータにアクセスするたびにリセットされます。

アイテムは、絶対有効期限とスライド有効期限が定義されているキャッシュで追加および更新できます。 次のコード例では、絶対有効期限が定義された状態でデータがキャッシュに追加されます。

CachingProvider cachingProvider = Caching.getCachingProvider();
CacheManager manager = cachingProvider.getCacheManager();
    Customer customer = new Customer();
    customer.setAge(22);
    String key = "Customer:" + customer.getCustomerID();

    //configure the expiration duration
    CompleteConfiguration<Object, Object> cacheConfig = new MutableConfiguration().setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(Duration.ONE_MINUTE));

    //create cache with customized configuration settings
    javax.cache.Cache jCache = manager.createCache("mypartitionedcache", cacheConfig);

    //add item to cache which will expire after 1 minute
    jCache.put(key, customer);

JCacheリスナーによるキャッシュイベントの監視

キャッシュレベルの通知 特定の登録済みイベントが発生したときにトリガーされる一般的なイベントです。 JCacheからイベント通知を取得するには、関連するイベント関連のインターフェイスを実装する必要があります。

以下の例では、イベントフィルターファクトリを実装していることを前提としています。

// class that implements the event-listener factory
public class MyCacheEntryListener<K, V>
   implements CacheEntryCreatedListener<K, V>, Serializable
   {...
           for (CacheEntryEvent<? extends K,? extends V> event: events)
            {
            System.out.println("Received a " + event);
            }
      ...
    }
    ...
//configuring
MyCacheEntryListener<String,String> m_listener = new MyCacheEntryListener<String,String>();

MutableConfiguration<String, String> config = new MutableConfiguration<String, String>();

config.setTypes(String.class, String.class).addCacheEntryListenerConfiguration(
                    new MutableCacheEntryListenerConfiguration<String, String>
                            (FactoryBuilder.factoryOf(m_listener),FactoryBuilder.factoryOf(
                                    new MyCacheEntryEventFilter<String, String>()),true,true));

Cache<String, String> jCache = cacheManager.createCache("myreplicatedcache", config);

使い方 NCache API

によって提供されるAPI NCache JCacheが提供するAPIと比較して、より堅牢な機能を提供します。 いくつかの機能 NCache は提供しますが、JCacheは次のようにはなりません。

いくつかの機能 NCache は提供しますが、JCacheは次のようにはなりません。

機能 標準 JCache (JSR 107) NCache JCacheプロバイダー
検索 キーベースのみ SQLとLINQクエリ
データタグ サポートされていません アンラップでサポート
固執 Basic リードスルー/ライトスルー
スケーリング JVMによる制限 線形スケーラブルなクラスター

によって提供されるこれらの機能のすべてを使用するために NCache APIには、そのキャッシュのインスタンスが必要です。

次のコード例は、JCacheAPIを使用して次のキャッシュインスタンスを取得する方法を示しています。 NCache unwrapメソッドを使用します。 次に、このインスタンスを使用して、データをキャッシュに追加します。 タグ (の機能 NCache)有効。 キーの代わりにこれらのタグを使用して、後でキャッシュからデータを取得できます。

... 
com.alachisoft.ncache.client.Cache cache = null;
cache = (com.alachisoft.ncache.client.Cache) jCache.unwrap(com.alachisoft.ncache.client.Cache.class);
Customer customer = fetchCustomer();
String customerKey = “Customer” + customer.getCustomerID();

// Specify Tags
List<Tag> tags = List.of(new Tag("East Coast Customers"));
CacheItem cacheItem = new CacheItem(customer);
cacheItem.setTags(tags);
cache.add(customerKey, cacheItem);

次はどうする?

よくある質問(FAQ)

その NCache JCacheプロバイダは、JSR 107(JCache)仕様に100%準拠した実装です。これにより、Java開発者は標準化されたキャッシュAPIを使用しながら、以下のメリットを享受できます。 NCacheの分散アーキテクチャにより、Java アプリケーションの高可用性と線形スケーラビリティが保証されます。

移行は簡単です。 NCache JSR 107規格に厳密に準拠しています。 NCache プロジェクト内のJCache jarファイルを設定し、 キャッシングプロバイダー あなたの NCache クラスター。基本的なキャッシュ操作には独自のコード変更は必要ありません。

Yes. NCache JSR 107 ExpiryPolicy(AbsoluteおよびSliding有効期限を含む)とCacheEntryListenerインターフェースを完全に実装しています。これにより、ローカルキャッシュから外部キャッシュへ移行する際に、キャッシュの削除ロジックとイベント駆動型ワークフローの一貫性が確保されます。 NCache 分散クラスター。

はい。 javax.cache.Cache.unwrap メソッドを使用すると、基盤となる NCache API。これにより、SQLのようなクエリ、アイテムのタグ付け、データベースの同期など、標準のJSR 107仕様にはない高度な機能が有効になります。

絶対に。 NCache JCache標準を活用したSpring CacheおよびHibernate Second Level Cache(L2)専用プロバイダーを提供します。これにより、エンタープライズJavaフレームワークへのシームレスな統合が可能になり、データベース負荷を軽減し、応答時間を改善できます。

お問い合わせ

電話

+1 214-619-2601 (米国)

+44 20 7993 8327 (英国)

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