Vyradenie medzipamäte v jarnom zavedení systému

1. Prehľad

V tomto krátkom návode sa naučíme ako môžeme pomocou Springu vykonať vysťahovanie z cache. Vytvoríme malý príklad, ktorý to demonštruje.

Skôr ako budete pokračovať, prečítajte si náš článok - Sprievodca jarným ukladaním do vyrovnávacej pamäte - a oboznámte sa s tým, ako funguje jarné ukladanie do pamäte cache.

2. Ako vysťahovať medzipamäť?

Jar poskytuje dva spôsoby, ako vysťahovať medzipamäť, a to buď pomocou @CacheEvict anotáciu metódy alebo automatickým zapojením CacheManger a vyčistiť ju zavolaním na jasný() metóda.

Tu je príklad, ako môžu byť tieto dva mechanizmy vysťahovania z cache implementované v kóde.

2.1. Použitím @CacheEvict

Vytvorme prázdnu metódu pomocou @CacheEvict anotáciu a uveďte názov medzipamäte, ktorý chceme vymazať ako argument anotácie (v tomto prípade chceme vymazať medzipamäť s názvom „prvý“):

@CacheEvict (value = "first", allEntries = true) public void evictAllCacheValues ​​() {}

Jar zachytí všetky metódy komentované @CacheEvict a vyčistiť všetky hodnoty na základe allEntries vlajka. Je možné vysťahovať hodnoty na základe konkrétneho kľúča.

Všetko, čo musíme urobiť, je odovzdať kľúč cache ako argument do anotácie namiesto allEntries vlajka:

@CacheEvict (value = "first", key = "#cacheKey") public void evictSingleCacheValue (reťazec cacheKey) {}

Od hodnoty kľúč atribút je dynamický, môžeme implementáciou buď použiť Spring Expression Language, alebo vlastný generátor kľúčov KeyGenerator aby ste vybrali záujmové argumenty alebo vnorené vlastnosti.

2.2. Použitím CacheManager

Ďalej sa pozrime, ako môžeme vypudiť medzipamäť pomocou príkazu CacheManager poskytuje modul Spring Cache. Najskôr musíme implementovať automatické prepojenie CacheManager fazuľa.

A potom s ním môžeme vyčistiť cache na základe našich potrieb:

@Autowired CacheManager cacheManager; public void evictSingleCacheValue (reťazec cacheName, reťazec cacheKey) {cacheManager.getCache (cacheName) .evict (cacheKey); } public void evictAllCacheValues ​​(reťazec cacheName) {cacheManager.getCache (cacheName) .clear (); }

Ako vidíme v kóde, the jasný() metóda vymaže všetky položky vyrovnávacej pamäte a vysťahovať () metóda vymaže hodnoty na základe kľúča.

3. Ako vyradiť všetky cache?

Jar neposkytuje funkčnosť po vybalení z pamäte, aby sa vyčistili všetky kešky. Ale ľahko to dosiahneme použitím getCacheNames () metóda správcu vyrovnávacej pamäte.

3.1. Vysťahovanie na požiadanie

Pozrime sa teraz, ako môžeme vyčistiť všetky kešky na požiadanie. Aby sme vytvorili spúšťací bod, musíme najskôr vystaviť koncový bod:

@RestController verejná trieda CachingController {@Autowired CachingService cachingService; @GetMapping ("clearAllCaches") public void clearAllCaches () {cachingService.evictAllCaches (); }}

V CachingService, potom môžeme vyčistite všetky pamäte cache opakovaním názvov vyrovnávacích pamätí získaných od správcu vyrovnávacích pamätí:

public void evictAllCaches () {cacheManager.getCacheNames (). stream () .forEach (cacheName -> cacheManager.getCache (cacheName) .clear ()); }

3.2. Automatické vysťahovanie

Existujú určité prípady použitia, kedy by sa vyradenie z vyrovnávacej pamäte malo vykonávať automaticky v určitých intervaloch. V tomto prípade, môžeme využiť jarný plánovač úloh:

@Scheduled (fixedRate = 6000) public void evictAllcachesAtIntervals () {evictAllCaches (); }

4. Záver

Naučili sme sa, ako vysťahovať kešky rôznymi spôsobmi. Jednou z vecí, ktoré stojí za zmienku o týchto mechanizmoch, je to, že bude pracovať so všetkými rôznymi implementáciami vyrovnávacej pamäte, ako je eh-cache, infini-span, apache-ignite atď.

Všetky príklady spomenuté v tomto tutoriále nájdete ako vždy na Githube.


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