Mi piacerebbe sapere quale sarebbe un approccio migliore per invalidare / aggiornare gli oggetti cache.
Prerequisiti
- Avere un server memcached remoto (che funge da cache per più applicazioni)
- Tutti i server sono ospitati da azzurro (aree di affinità, stessi data center)
- La dimensione dell'oggetto della cache varia da 200 byte a 50 kilobyte
Approccio 1 (memorizzare nella cache al più presto)
- Viene creato l'oggetto A -> memorizza nel database e memorizza nella cache
- Oggetto A richiesto dal client -> verifica l'esistenza della cache, altrimenti recupera dal database e archivia nella cache
- L'oggetto A viene aggiornato -> archivia nel database, archivia nella cache
L'approccio 1 sembra essere più semplice. Se qualcosa viene creato, inserisci la cache il prima possibile. Indipendentemente da qualcuno ne avrà bisogno.
Approccio 2 (archivio cache pigro)
- Viene creato l'oggetto A -> memorizza nel database
- Oggetto A richiesto dal client -> verifica l'esistenza della cache, altrimenti recupera dal database e archivia nella cache
- L'oggetto A viene aggiornato -> archivia nel database, cancella la chiave nella cache
L'approccio 2 sembra essere più consapevole della memoria. In questo approccio solo gli elementi richiesti vanno nella cache.
Domanda 1: in considerazione delle prestazioni, quale sarebbe un approccio migliore? La memoria e la CPU non contano ancora.
Domanda 2: I miei pensieri sono una sorta di ottimizzazione prematura?
Domanda 3: Qualche altro pensiero? Altri approcci?