Il mio caso d'uso è di mantenere una cache in memoria sui dati memorizzati in un DB persistente.Implementazione di una cache periodicamente aggiornata in Java
Uso i dati per compilare una lista/mappa di voci sull'interfaccia utente. In qualsiasi momento, i dati visualizzati sull'interfaccia utente dovrebbero essere il più aggiornati possibile (beh, questo può essere fatto dalla frequenza di aggiornamento della cache).
La differenza principale tra un'implementazione regolare della cache e questa particolare cache è che ha bisogno di un aggiornamento di massa di tutti gli elementi a intervalli regolari e quindi è piuttosto diverso da un tipo di cache LRU.
Ho bisogno di fare questa implementazione in Java e sarà fantastico se ci sono dei framework esistenti che possono essere utilizzati per ottenere questo costruito attorno ad essi.
Ho esplorato la libreria cache di Google Guava ma è più adatto a un aggiornamento per voce piuttosto che a un aggiornamento in blocco. Non ci sono semplici API che eseguono un aggiornamento sull'intera cache.
Qualsiasi aiuto sarà molto apprezzato.
Inoltre, se è possibile eseguire l'aggiornamento in modo incrementale, sarà grande perché l'unica limitazione che si verifica durante l'aggiornamento dell'intera cache è che se la cache è di dimensioni molto grandi, l'heap della memoria deve essere almeno due volte la dimensione della cache per caricare le nuove voci e sostituire la vecchia mappa con quella nuova. Se la cache è incrementale o c'è un aggiornamento a blocchi (aggiornamento in dimensioni uguali) sarà fantastico.
@ jtahlborn- L'API BulkLoader (http://ehcache.org/documentation/apis/bulk-loading) di EhCache è utile ma sarebbe stato grandioso se avesse fornito un'opzione refreshTime o intervallo periodico in cui avrebbe gestito da sola la pianificazione per l'aggiornamento della cache. In ogni caso, può sempre essere ottenuto tramite un programma di pianificazione esterno e invocando periodicamente l'API di caricamento collettivo. Grazie per la risposta. –
Per informazioni su EHCache: http://www.ehcache.org/documentation/3.3/thread-pools.html e http://terracotta.org/documentation/4.1/bigmemorymax/api/bulk-loading – Aliuk
Ma. .non è time-to-live rimuove semplicemente l'elemento dalla cache? NON è la stessa cosa che hai scritto qui - "ricarica automatica" – javagirl