Introduksjon til Guava CacheLoader

1. Introduksjon

I denne artikkelen introduserer vi Guava CacheLoader.

Før du leser videre, anbefales det at det er en grunnleggende forståelse av LoadingCache klasse først. Dette er fordi CacheLoader jobber med det spesifikt.

I hovedsak er det CacheLoader er en funksjon som brukes til å beregne en verdi i tilfelle den ikke blir funnet i en Guava LoadingCache.

2. Bruke en CacheLoader Med en LoadingCache

Når det er en hurtigbuffer med en LoadingCache, eller cachen må oppdateres, CacheLoader vil bli brukt til å beregne verdier. Dette hjelper til med å kapsle cachinglogikken vår på ett sted, noe som gjør koden vår mer sammenhengende.

2.1. Maven avhengighet

La oss først legge til vår Maven-avhengighet:

 com.google.guava guava 29.0-jre 

Du finner den siste versjonen i Maven-arkivet.

2.2. Verdier for databehandling og hurtigbufring

La oss nå se hvordan vi kan starte en LoadingCache med en CacheLoader:

LoadingCache loadingCache = CacheBuilder.newBuilder () .build (ny CacheLoader () {@ Overstyr offentlig strengbelastning (siste streng) kaster Unntak {retur slowMethod (s);}});

I hovedsak er det LoadingCache vil kalle vår inline CacheLoader når den trenger å beregne en verdi som ikke er bufret. La oss prøve å telle hvor mange ganger våre slowMethod () kalles når vi henter noe fra hurtigbufferen flere ganger:

Strengverdi = loadingCache.get ("nøkkel"); verdi = loadingCache.get ("nøkkel"); assertThat (callCount) .isEqualTo (1); assertThat (verdi) .isEqualTo ("forventet verdi"); 

Som vi kan se, ble det bare kalt en gang. Første gang verdien ikke ble hurtigbufret, da den ennå ikke var beregnet. Den andre gangen ble den lagret fra den forrige samtalen, slik at vi kunne unngå overhead for å ringe vår slowMethod () en gang til.

2.3. Forfrisker hurtigbufferen

Et annet vanlig problem med hurtigbufring er å fornye hurtigbufferen. Selv om det vanskeligste aspektet er å vite når for å oppdatere hurtigbufferen, vet en annen hvordan.

Løse hvordan er enkelt når du bruker CacheLoader. De LoadingCache vil ganske enkelt påkalle den for hver verdi som må oppdateres. La oss prøve dette med en test:

Strengverdi = loadingCache.get ("nøkkel"); loadingCache.refresh ("nøkkel"); assertThat (callCount) .isEqualTo (2); assertThat (verdi) .isEqualTo ("nøkkel");

I motsetning til våre påfølgende samtaler til få (), oppdater () vil tvinge CacheLoader å bli kalt igjen, og sørge for at verdiene våre er oppdaterte.

3. Konklusjon

I denne artikkelen har vi forklart hvordan en LoadingCache brukes av en CacheLoader for å beregne verdier på hurtigbuffer, og også på hurtigbufferoppdatering. Det er også verdt å sjekke ut denne mer inngående artikkelen om Guava Caching.

Implementeringen av disse eksemplene finner du på GitHub. Dette er et Maven-prosjekt, så det skal være enkelt å kjøre det som det er.


$config[zx-auto] not found$config[zx-overlay] not found