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!