typescript - Invaliderer TypeOrm automatisk cachen?
Jeg jobber med et prosjekt som bruker TypeOrm, og jeg ønsket å implementere caching av databaseforespørsler. Siden TypeOrm støtter caching direkte gjennom QueryBuilder.cache-metoden, endte koden min opp med å se omtrent slik ut:
const items = this.itemsRepository
.createQueryBuilder('item')
.where('item.name = :name', { name })
.cache(
CacheKeyMaker.makeCacheKey('item', name), // generate cache key
300000, // 5 minutes
)
.getMany();
MERK: Jeg brukte ioredis som cache-driver
Det jeg la merke til da, etter en innsats eller en oppdatering i databasen, ble de bufrede nøklene fjernet fra databasen (ugyldiggjort). Invaliderer TypeOrm cache automatisk spørringer på hver tabell etter innsats/oppdatering/sletting? Og hvis ja, hvor "intelligent" er det? Invaliderer det bare nøkler som ble påvirket av oppdateringen? For eksempel, hvis jeg spør om elementer med name="box" og deretter setter inn et element med et annet navn, vil cachen fortsatt bli ugyldiggjort (fordi cachen faktisk fortsatt er gyldig i dette tilfellet).
Jeg prøvde å manuelt teste hvordan TypeOrm cache-invalidasjon fungerer, men det virket som om det fungerer inkonsistent. Jeg vil være takknemlig for all kunnskap, takk på forhånd!