Java キャッシュ テクノロジのキャッシュ リーダーおよびキャッシュ ライター

WBOY
リリース: 2023-06-20 13:00:11
オリジナル
1228 人が閲覧しました

キャッシュ テクノロジは日常の開発で広く使用されており、Java にはさまざまなキャッシュ実装があります。中でもキャッシュリーダライタは重要なキャッシュ技術であり、本記事ではJavaのキャッシュリーダライタについて詳しく紹介します。

1. キャッシュ リーダーおよびライターとは何ですか

キャッシュ リーダーおよびライターは、オブジェクトをキャッシュに保存する際の特定のキャッシュ動作をサポートするために提供されるインターフェイスです。キャッシュ リーダーとキャッシュ ライターは、キャッシュからデータを読み取るメソッドと、キャッシュにデータを書き込むメソッドを提供します。キャッシュ リーダーとキャッシュ ライターは、キャッシュの一貫性を確保し、開発者が独自のキャッシュ戦略をカスタマイズできる共通のキャッシュ インターフェイスを提供します。

Java のキャッシュ リーダーおよびキャッシュ ライターは、CacheWriter および CacheLoader と呼ばれるパターンを使用します。 CacheWriter はキャッシュにデータを書き込むメソッドを提供し、CacheLoader はキャッシュからデータを読み取るメソッドを提供します。

2. CacheWriter インターフェイス

CacheWriter インターフェイスは、キャッシュにデータを書き込むために使用されるインターフェイスです。これには、CacheEntry オブジェクトをパラメーターとして受け取る書き込みメソッドが含まれています。 CacheEntry オブジェクトは、キャッシュに書き込まれるデータを表します。以下は、CacheWriter インターフェイスのサンプル コードです。

public interface CacheWriter<K,V> {
    void write(Cache.Entry<? extends K, ? extends V> entry) throws CacheWriterException;
}
ログイン後にコピー

CacheWriter には、キャッシュ キーと値の型を表すジェネリック型 K と V が含まれています。 write メソッドは、キャッシュ内のデータが書き込まれることを示す Cache.Entry オブジェクトをパラメータとして受け取ります。 Cache.Entry にはキャッシュ キーとキャッシュ値が含まれており、それらの値を取得および設定するメソッドを提供します。

キャッシュに書き込む場合、CacheWriter インターフェイスは次のメソッドを提供します。

単一のキャッシュ エントリを書き込む: write(Cache.Entry)

複数のエントリを書き込む: writeAll( Collection>)

キャッシュ エントリの削除: delete(Object)

複数のエントリの削除: deleteAll(Collection

CacheWriter の書き込みメソッドは同期であるため、データの一貫性を確保できることに注意してください。

3. CacheLoader インターフェイス

CacheLoader インターフェイスは、キャッシュからデータを読み取るために使用されるインターフェイスです。これには、キャッシュ キーをパラメータとして受け取り、キャッシュ値を返すロード メソッドが含まれています。以下は、CacheLoader インターフェイスのサンプル コードです。

public interface CacheLoader<K,V> {
    V load(K key) throws CacheLoaderException;
}
ログイン後にコピー

CacheLoader には、キャッシュ キーと値の型を表すジェネリック型 K と V が含まれています。 load メソッドは、キャッシュ キーをパラメータとして受け取り、キャッシュ値を返します。キャッシュされた値が見つからない場合、load メソッドは null を返す必要があります。

一般的に、CacheLoader はキャッシュを自動的に埋めるために使用されます。キーに対応する値がキャッシュ内で見つからない場合、キャッシュは CacheLoader の load メソッドを呼び出して、バックグラウンド データ ソース (データベース、ファイル システムなど) からデータを自動的にロードし、そのデータをキャッシュに保存します。

4. CacheWriter と CacheLoader の例

以下は CacheWriter と CacheLoader のサンプル コードです。ここでは、ConcurrentHashMap に基づく単純なキャッシュを使用します。

import java.util.Map;
import javax.cache.Cache.Entry;
import javax.cache.integration.CacheLoader;
import javax.cache.integration.CacheLoaderException;
import javax.cache.integration.CacheWriter;
import javax.cache.integration.CacheWriterException;

public class SimpleCache<K, V> implements CacheWriter<K, V>, CacheLoader<K, V> {

    private Map<K, V> cache = new ConcurrentHashMap<>();

    @Override
    public void delete(Object o) throws CacheWriterException {
        cache.remove(o);
    }

    @Override
    public void deleteAll(Collection<?> collection) throws CacheWriterException {
        for(Object o : collection) {
            delete(o);
        }
    }

    @Override
    public void write(Entry<? extends K, ? extends V> entry) throws CacheWriterException {
        cache.put(entry.getKey(), entry.getValue());
    }

    @Override
    public void writeAll(Collection<? extends Entry<? extends K, ? extends V>> collection) throws CacheWriterException {
        for(Entry<? extends K, ? extends V> entry : collection) {
            write(entry);
        }
    }

    @Override
    public V load(K k) throws CacheLoaderException {
        return cache.get(k);
    }

    @Override
    public Map<K, V> loadAll(Iterable<? extends K> iterable) throws CacheLoaderException {
        throw new UnsupportedOperationException("Not implemented");
    }

    @Override
    public void loadCache(IgniteBiInClosure<K, V> biInClosure, Object... objects) throws CacheLoaderException {
        throw new UnsupportedOperationException("Not implemented");
    }
}
ログイン後にコピー

この例では、ConcurrentHashMap を使用してメモリベースのキャッシュを実装します。 CacheWriter インターフェイスと CacheLoader インターフェイスを実装し、対応する書き込みメソッドとロード メソッドを実装しました。キーがキャッシュに存在しない場合、load メソッドは null を返し、キャッシュは CacheLoader のload メソッドを呼び出して、バックグラウンド データ ソースからデータを読み込みます。

5. 概要

キャッシュ リーダーおよびライターは、Java キャッシュ テクノロジの重要な部分です。開発者が独自のキャッシュ戦略をカスタマイズできるようにする、カスタマイズ可能なキャッシュ インターフェイスを提供します。 Javaではキャッシュリーダー、キャッシュライターの実装メソッドの一つとしてCacheWriter、CacheLoaderがあり、これらを実装することでアプリケーション上で自動的にキャッシュを埋める機能を実現できます。

以上がJava キャッシュ テクノロジのキャッシュ リーダーおよびキャッシュ ライターの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート