Heim  >  Artikel  >  Java  >  Cache-Leser und -Schreiber in der Java-Caching-Technologie

Cache-Leser und -Schreiber in der Java-Caching-Technologie

WBOY
WBOYOriginal
2023-06-20 13:00:111216Durchsuche

Caching-Technologie wird in der täglichen Entwicklung häufig verwendet und es gibt verschiedene Cache-Implementierungen in Java. Unter diesen ist der Cache-Leser und -Schreiber eine wichtige Caching-Technologie. In diesem Artikel wird der Cache-Leser und -Schreiber in Java ausführlich vorgestellt.

1. Was ist ein Cache-Leser und -Schreiber?

Ein Cache-Leser und -Schreiber ist eine Schnittstelle, die zur Unterstützung eines bestimmten Cache-Verhaltens beim Speichern von Objekten im Cache bereitgestellt wird. Cache-Leser und -Schreiber stellen Methoden zum Lesen von Daten aus dem Cache und Methoden zum Schreiben von Daten in den Cache bereit. Cache-Leser und -Writer stellen die Cache-Konsistenz sicher und stellen eine gemeinsame Cache-Schnittstelle bereit, die es Entwicklern ermöglicht, ihre eigenen Cache-Strategien anzupassen.

Cache-Leser und -Schreiber in Java verwenden ein Muster namens CacheWriter und CacheLoader. CacheWriter stellt Methoden zum Schreiben von Daten in den Cache bereit, während CacheLoader Methoden zum Lesen von Daten aus dem Cache bereitstellt.

2. CacheWriter-Schnittstelle

Die CacheWriter-Schnittstelle ist eine Schnittstelle zum Schreiben von Daten in den Cache. Es enthält eine Schreibmethode, die ein CacheEntry-Objekt als Parameter empfängt. Ein CacheEntry-Objekt stellt die Daten dar, die in den Cache geschrieben werden sollen. Das Folgende ist ein Beispielcode für die CacheWriter-Schnittstelle:

public interface CacheWriter<K,V> {
    void write(Cache.Entry<? extends K, ? extends V> entry) throws CacheWriterException;
}

CacheWriter enthält einen generischen Typ K und V, der die Typen von Cache-Schlüsseln und -Werten darstellt. Die Schreibmethode empfängt ein Cache.Entry-Objekt als Parameter, das angibt, dass die Daten im Cache geschrieben werden sollen. Cache.Entry enthält Cache-Schlüssel und Cache-Werte und stellt Methoden zum Abrufen und Festlegen ihrer Werte bereit.

Beim Schreiben in den Cache stellt die CacheWriter-Schnittstelle die folgenden Methoden zur Verfügung:

Einen einzelnen Cache-Eintrag schreiben: write(Cache.Entry)

Mehrere Einträge schreiben: writeAll(Collection5964aa4964bfcc8d7ed348f788fae073>)

Cache-Einträge löschen: delete(Object)

Mehrere Einträge löschen: deleteAll(Collection6b3d0130bba23ae47fe2b8e8cddf0195)

Es ist zu beachten, dass die Schreibmethode von CacheWriter synchron ist, sodass dies gewährleistet werden kann Datenkonsistenz.

3. CacheLoader-Schnittstelle

Die CacheLoader-Schnittstelle ist eine Schnittstelle zum Lesen von Daten aus dem Cache. Es enthält eine Lademethode, die einen Cache-Schlüssel als Parameter empfängt und einen Cache-Wert zurückgibt. Das Folgende ist ein Beispielcode für die CacheLoader-Schnittstelle:

public interface CacheLoader<K,V> {
    V load(K key) throws CacheLoaderException;
}

CacheLoader enthält einen generischen Typ K und V, der die Typen von Cache-Schlüsseln und -Werten darstellt. Die Lademethode empfängt einen Cache-Schlüssel als Parameter und gibt einen Cache-Wert zurück. Wenn der zwischengespeicherte Wert nicht gefunden wird, sollte die Lademethode null zurückgeben.

Im Allgemeinen wird CacheLoader verwendet, um den Cache automatisch zu füllen. Wenn der einem Schlüssel entsprechende Wert nicht im Cache gefunden werden kann, ruft der Cache die Lademethode von CacheLoader auf, um automatisch Daten aus Hintergrunddatenquellen (z. B. Datenbanken, Dateisystemen usw.) zu laden und die Daten im Cache zu speichern.

4. CacheWriter- und CacheLoader-Beispiele

Das Folgende ist der Beispielcode von CacheWriter und CacheLoader. Hier verwenden wir einen einfachen Cache basierend auf 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");
    }
}

In diesem Beispiel verwenden wir ConcurrentHashMap, um einen speicherbasierten Cache zu implementieren. Implementierte die Schnittstellen CacheWriter und CacheLoader sowie die entsprechenden Schreib- und Lademethoden. Wenn im Cache kein Schlüssel vorhanden ist, gibt die Lademethode null zurück und der Cache ruft die Lademethode von CacheLoader auf, um Daten aus der Hintergrunddatenquelle zu laden.

5. Zusammenfassung

Der Cache-Reader und -Writer ist ein wichtiger Bestandteil der Java-Cache-Technologie. Es bietet eine anpassbare Caching-Schnittstelle, die es Entwicklern ermöglicht, ihre eigenen Caching-Strategien anzupassen. In Java sind CacheWriter und CacheLoader eine der Implementierungsmethoden von Cache-Lesern und -Schreibern. Durch ihre Implementierung kann die Funktion des automatischen Füllens des Caches in der Anwendung realisiert werden.

Das obige ist der detaillierte Inhalt vonCache-Leser und -Schreiber in der Java-Caching-Technologie. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn