Redis
 sql >> Database >  >> NoSQL >> Redis

Cache dell'applicazione vs. ibernare la cache di secondo livello, quale usare?

Dipende davvero dal modello di query dell'applicazione e dalle richieste di traffico.

  1. L'uso di Redis/Hazelcast può fornire le migliori prestazioni poiché non ci sarà più alcun viaggio di andata e ritorno verso DB, ma si finisce per avere dati normalizzati nel DB e una copia denormalizzata nella cache, il che metterà sotto pressione l'aggiornamento della cache politiche. In questo modo ottieni le migliori prestazioni al costo dell'implementazione dell'aggiornamento della cache ogni volta che i dati persistenti cambiano.
  2. L'uso della cache di 2° livello è più facile da configurare ma memorizza solo le entità per ID. C'è anche una cache di query, che memorizza gli ID restituiti da una determinata query. Quindi la cache di 2° livello è un processo in due fasi che è necessario mettere a punto per ottenere le migliori prestazioni. Quando esegui query di proiezione, la cache degli oggetti di 2° livello non ti aiuterà, poiché opera solo sul carico di entità. Il vantaggio principale della cache di 2° livello è che è più facile mantenerla sincronizzata ogni volta che i dati cambiano, soprattutto se tutti i tuoi dati vengono mantenuti in modalità ibernazione.

Quindi, se hai bisogno delle massime prestazioni e non ti dispiace implementare la tua logica di aggiornamento della cache che garantisce una finestra di coerenza minima, allora scegli una cache esterna.

Se hai solo bisogno di memorizzare nella cache le entità (che di solito non cambiano così frequentemente) e accedi a quelle principalmente tramite il caricamento delle entità in sospensione, allora la cache di 2° livello può aiutarti.