Frage
Ich suche nach einer Java In-Memory-Objekt-Caching-API. Irgendwelche Empfehlungen? Welche Lösungen haben Sie in der Vergangenheit verwendet?
Aktuell
Im Moment verwende ich nur eine Karte:
Map cache = new HashMap<String, Object>();
cache.put("key", value);
Bedarf
Ich muss den Cache um grundlegende Funktionen wie Folgendes erweitern:
- maximale Größe
- Zeit zu leben
Ich brauche jedoch keine anspruchsvolleren Funktionen wie:
- Zugriff von mehreren Prozessen (Caching-Server)
- Persistenz (auf Festplatte)
Vorschläge
In-Memory-Caching:
- Guava CacheBuilder - aktive Entwicklung. Siehe diese Präsentation .
- LRUMap - Konfiguration über API. Keine TTL. Nicht für das Caching gedacht.
- whirlycache - XML-Konfiguration Mailingliste. Letzte Aktualisierung 2006.
- cache4j - XML-Konfiguration Dokumentation in russischer Sprache. Letzte Aktualisierung 2006.
Enterprise-Caching:
@Cacheable
unter jcabi-Aspekten : yegor256.com/2014/08/03/cacheable-java-annotation.htmlAntworten:
EHCache ist sehr nett. Sie können einen In-Memory-Cache erstellen. In den Codebeispielen finden Sie ein Beispiel für die Erstellung eines In-Memory-Cache. Sie können eine maximale Größe und eine Lebenszeit angeben.
EHCache bietet einige erweiterte Funktionen, aber wenn Sie nicht daran interessiert sind, diese zu verwenden, tun Sie dies nicht. Aber es ist schön zu wissen, dass sie da sind, wenn sich Ihre Anforderungen jemals ändern.
Hier ist ein In-Memory-Cache. Erstellt im Code ohne Konfigurationsdateien.
Erstellt einen Cache mit 200 Elementen und einer Laufzeit von 24 Stunden.
quelle
Ich mag das
MapMaker
, was mit Google Guava ( API ) geliefert wird.Der JavaDoc hat ein hübsches Beispiel, das sowohl seine Benutzerfreundlichkeit als auch seine Leistungsfähigkeit demonstriert:
Darüber hinaus wurde in Version 10.0 von Guava das viel umfangreichere
com.google.common.cache
Paket eingeführt (es gibt einen schönen Wiki-Eintrag zu deren Verwendung ).quelle
Sie können auch meine kleine Cache-Bibliothek namens KittyCache unter folgender Adresse überprüfen:
https://github.com/treeder/kitty-cache
Es gibt einige Leistungsbenchmarks gegenüber ehcache.
Es wird im SimpleJPA- Projekt als Cache der zweiten Ebene verwendet.
quelle
Sie können LinkedHashMap auschecken, um einen einfachen Cache ohne Jars von Drittanbietern zu implementieren:
dann kann man aus dem cache gerne abrufen
Rest links als Übung für den Leser :)
quelle
Guava des MapMaker wurde durch ihre ersetzt CacheBuilder Klasse.
quelle
JCS hat sich bewährt. Auch wenn es in Bezug auf die Caching-Mechanismen leicht ist, können Sie sich in den eigentlichen Code vertiefen und nachahmen, was sie mit HashMap unter der Decke tun, um genau das zu erreichen, was Sie brauchen, und nicht mehr. Sie scheinen eine ziemlich gute Vorstellung davon zu haben, wonach Sie suchen.
quelle
memcached hat einen Client für Java. http://www.danga.com/memcached/ Erfordert einen separaten Prozess, um ein Caching-Server zu sein, aber eine leistungsstarke Sache.
quelle