2010-02-26 10 views
5

La mia applicazione Web Java (tomcat) recupera tutti i dati da un database SQL. Tuttavia, ampie parti di questo database vengono aggiornate solo una volta al giorno tramite un batchjob. Poiché le query su queste tabelle tendono a essere piuttosto lente, voglio memorizzare nella cache i risultati.Cache con tempo di scadenza fisso in Java

Prima di eseguire la mia soluzione, volevo controllare le soluzioni cache esistenti per java. Ovviamente, ho cercato StackOverflow e trovato riferimenti e raccomandazioni per ehcache.

Ma guardando attraverso la documentazione sembra consente solo per l'impostazione della durata degli oggetti memorizzati nella cache come una durata (ad esempio, scade 1 ora dopo aggiunto), mentre io voglio una scadenza sulla base di un tempo fisso (ad esempio, scade alle 0h30 del mattino) .

Qualcuno conosce una libreria cache che consente tale comportamento di scadenza? O come farlo con ehcache se è possibile?

risposta

5

EhCache consente di impostare la durata di scadenza su un singolo elemento della cache al momento della creazione. I valori configurati in ehcache.xml sono solo valori predefiniti.

Se si conosce il tempo assoluto specifico in cui l'elemento deve scadere, è possibile calcolare la differenza in secondi tra l'ora e "ora" (ovvero il tempo che si aggiunge alla cache) e impostarlo come il tempo necessario -live duration, usando Element.setTimeToLive()

1

Avete bisogno di una soluzione cache completa? Si utilizzano le mappe standard e quindi è pianificato un lavoro per cancellarle all'ora richiesta.

+1

Questa è la soluzione rolling mia opzione :), certamente fattibile, ma se esiste una buona soluzione di terze parti ovviamente la preferirei. – Pieter

Problemi correlati