In un'applicazione ordinaria, le stesse informazioni possono essere recuperate dal database in diversi modi. Se tutti questi modi implementano la memorizzazione nella cache, è necessario invalidare tutte le voci della cache durante l'aggiornamento di una voce nel database.
Alcuni accoppiamenti tra aggiornamenti e selezioni sono facili da fare. Facciamo un esempio di un prodotto 123 nella categoria 9 con un prezzo di $ 12,50. Se selezioni un prodotto per ID:
select [...] from [Shop].[Product] where [ProductId] = 123
memorizzandolo nella cache con una chiave Product<Id:123>
, non è così difficile invalidare questa voce della cache dopo aver aggiornato il prezzo di un prodotto identificato dal suo ID:
update [Shop].[Product] set [Price] = 14.99 where [ProductId] = 123
Le cose diventano più difficili quando devi anche ricordare di invalidare la cache con la chiave MostExpensive<CategoryId:9>
corrispondente alla query:
select max([Price]) from [Shop].[Product] where [CategoryId] = 9
Che cos'è un modo efficace per tenere traccia delle voci della cache? Come trovare, durante lo sviluppo o la revisione del codice, quali voci devono essere invalidate quando uno o l'altro pezzo di dati viene modificato?