Mein Anwendungsfall besteht darin, einen In-Memory-Cache über die Daten zu führen, die in einer persistenten Datenbank gespeichert sind.Implementieren eines periodisch aktualisierenden Cache in Java
Ich verwende die Daten zum Auffüllen einer Liste/Karte von Einträgen auf der Benutzeroberfläche. Zu jedem Zeitpunkt sollten die auf der Benutzeroberfläche angezeigten Daten so aktualisiert sein, wie es möglich ist (dies kann auch durch die Aktualisierungsfrequenz des Cache geschehen).
Der Hauptunterschied zwischen einer regulären Cache-Implementierung und diesem bestimmten Cache besteht darin, dass eine regelmäßige Aktualisierung aller Elemente in regelmäßigen Intervallen erforderlich ist und sich daher von einem LRU-Cache unterscheidet.
Ich muss diese Implementierung in Java tun und es wird großartig sein, wenn es irgendwelche vorhandenen Frameworks gibt, die verwendet werden können, um diese um sie herum zu bauen.
Ich habe die Google Guava-Cache-Bibliothek erkundet, aber sie ist eher für eine Aktualisierung pro Eintrag als für eine Massenaktualisierung geeignet. Es gibt keine einfachen APIs, die eine Aktualisierung für den gesamten Cache durchführen.
Jede Hilfe wird sehr geschätzt.
Auch wenn es möglich ist, inkrementell die Aktualisierung durchzuführen, sollte es groß sein, da die einzige Einschränkung beim Aktualisieren des gesamten Cache besteht, wenn der Cache sehr groß ist, sollte der Speicher-Heap mindestens zweimal sein die Größe des Caches, um die neuen Einträge zu laden und die alte durch die neue zu ersetzen. Wenn der Cache inkrementell ist oder eine Chunked-Aktualisierung (in gleichen Größen) durchgeführt wird, wird es großartig.
@ jtahlborn- Die BulkLoader-API (http://ehcache.org/documentation/apis/bulk-loading) von EhCache ist hilfreich, aber es wäre großartig gewesen, wenn sie eine refreshTime- oder periodische Intervallzeit-Option bereitgestellt hätte, die sie selbst verwalten würde die Planung für die Cache-Aktualisierung. Wie auch immer, es kann immer durch einen externen Scheduler erreicht werden und die Bulk Loading API wird periodisch aufgerufen. Danke für die Antwort. –
Für EHCache werfen Sie einen Blick auf: http://www.ehcache.org/documentation/3.3/thread-pools.html und http://terracotta.org/documentation/4.1/bigmemorymax/api/bulk-loading – Aliuk
Aber. .ist time-to-live nicht einfach Element aus dem Cache entfernt? Es ist NICHT das gleiche wie das, was Sie hier geschrieben haben - "automatisches Neuladen" – javagirl