Ich habe Spring Boot verwendet und wollte einen Cache implementieren, also habe ich es versucht.
In Spring Boot sind mehrere Caches verfügbar. https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-caching.html
Von oben betrachtet scheint EhCache 2.x einfach zu installieren zu sein. Es wird gesagt, dass wenn ehcache.xml im Klassenpfad vorhanden ist, es verwendet wird, so dass es einfach einzuführen scheint, also werde ich es versuchen.
EhCache 2.x
Rufen wir es diesmal aus der Klasse auf, die mit "@ SpringBootApplication" versehen ist. Kommentieren Sie "@ EnableCaching"
CacheApplication.java
@SpringBootApplication
@EnableCaching
public class CacheApplication implements CommandLineRunner {
@Autowired
Cache cache;
private final static Logger logger = LoggerFactory.getLogger(CacheApplication.class);
private final static DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
public static void main(String[] args) {
SpringApplication.run(CacheApplication.class, args);
}
public void run(String[] args){
this.getValue("Zwischengespeichert werden");
this.getValue("Zwischengespeichert werden");//Zwischengespeichert werden
this.getValue("Nicht zwischengespeichert, da die Argumente unterschiedlich sind");//Nicht zwischengespeichert, da die Argumente unterschiedlich sind
this.getValue("Zwischengespeichert werden");//引数違うのを挟んでZwischengespeichert werden
try {
Thread.sleep(3000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
this.getValue("Zwischengespeichert werden");//Das Argument ist das gleiche, wird jedoch nicht zwischengespeichert, da die Überlebenszeit abgelaufen ist
}
public void getValue(String key){
logger.info(key + " Start at: " + LocalDateTime.now().format(dateTimeFormatter));
String ret = cache.getFromCache(key); //Cache-fähige Methode
logger.info(ret + " End at: " + LocalDateTime.now().format(dateTimeFormatter));
}
}
Fügen Sie der Methode, für die Sie das Caching aktivieren möchten, "@ Cacheable" hinzu
Cache.java
@Component
public class Cache {
@Cacheable("getCache") //Aktivieren Sie das Caching für diese Methode
public String getFromCache(String key){
try {
Thread.sleep(3000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "End getFromCache:" + key;
}
}
pom.xml Fügen Sie pom.xml zwei Systeme hinzu, "Spring-Boot-Starter-Cache" und "Ehcache".
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.10.3</version>
</dependency>
ehcache.xml
Erstellen Sie ehcache.xml unter src / main / resources /.
Setzen Sie timeToLiveSeconds
auf 5 und die Cache-Lebensdauer auf 5 Sekunden.
ehcache.xml
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
<diskStore path="java.io.tmpdir"/>
<cache
name="getCache"
timeToLiveSeconds="5"
maxEntriesLocalHeap="0">
</cache>
</ehcache>
application.properties Fügen Sie application.properties die folgenden Einstellungen hinzu, um ehcache zu verwenden. Dies ist nicht erforderlich, wenn der einzige verfügbare Cache ehcache ist.
spring.cache.type=ehcache
Ich werde das machen. Das Ausführungsergebnis ist wie folgt.
2020-02-29 21:29:48 -Zwischengespeichert Start um: 21:29:48
2020-02-29 21:29:51 - End getFromCache:Zwischengespeichertes Ende bei: 21:29:51
2020-02-29 21:29:51 -Zwischengespeichert Start um: 21:29:51
2020-02-29 21:29:51 - End getFromCache:Zwischengespeichertes Ende bei: 21:29:51
2020-02-29 21:29:51 -Nicht zwischengespeichert, da die Argumente unterschiedlich sind: 21:29:51
2020-02-29 21:29:54 - End getFromCache:Nicht zwischengespeichert, da die Argumente unterschiedlich sind: 21:29:54
2020-02-29 21:29:54 -Zwischengespeichert Start um: 21:29:54
2020-02-29 21:29:54 - End getFromCache:Zwischengespeichertes Ende bei: 21:29:54
2020-02-29 21:29:57 -Zwischengespeichert Start um: 21:29:57
2020-02-29 21:30:00 - End getFromCache:Zwischengespeichertes Ende bei: 21:30:00
Wir werden die Ergebnisse unten sehen. Das erste Mal dauert es 3 Sekunden, aber das zweite Mal ist ein Moment, also scheint der Cache zu funktionieren.
2020-02-29 21:29:48 -Zwischengespeichert Start um: 21:29:48
2020-02-29 21:29:51 - End getFromCache:Zwischengespeichertes Ende bei: 21:29:51
2020-02-29 21:29:51 -Zwischengespeichert Start um: 21:29:51
2020-02-29 21:29:51 - End getFromCache:Zwischengespeichertes Ende bei: 21:29:51
Wenn Sie ein anderes Argument übergeben, wird es nicht zwischengespeichert, sodass es weitere 3 Sekunden dauert.
2020-02-29 21:29:51 -Nicht zwischengespeichert, da die Argumente unterschiedlich sind: 21:29:51
2020-02-29 21:29:54 - End getFromCache:Nicht zwischengespeichert, da die Argumente unterschiedlich sind: 21:29:54
Die folgenden Überlebenszeiten betragen mehr als 5 Sekunden, sodass sie nicht zwischengespeichert werden und 3 Sekunden dauern.
2020-02-29 21:29:57 -Zwischengespeichert Start um: 21:29:57
2020-02-29 21:30:00 - End getFromCache:Zwischengespeichertes Ende bei: 21:30:00
Der Cache verhält sich wie vorgesehen.
Ich dachte, SpringBoot und EhCache2.X sind schnell, weil der Cache nur mit Anmerkungen und Konfigurationsdateien implementiert werden kann. Nachdem Sie jedoch erfahren haben, dass die EhCache3-Serie bereits verfügbar ist, ist es möglicherweise nicht üblich, die Verwendung der EhCache2-Serie zu wagen.
Als ich Koffein ausprobierte, konnte ich den Cache auf die gleiche Weise implementieren, so dass ich das anscheinend auch verwenden kann. Der folgende Artikel war hilfreich. https://qiita.com/yut_arrows/items/4b664acdfa852c0bd6cd
Recommended Posts