Pytanie
Szukam interfejsu API buforowania obiektów w pamięci Java. Jakieś zalecenia? Z jakich rozwiązań korzystałeś w przeszłości?
obecny
W tej chwili używam tylko mapy:
Map cache = new HashMap<String, Object>();
cache.put("key", value);
Wymagania
Muszę rozszerzyć pamięć podręczną, aby zawierała podstawowe funkcje, takie jak:
- największy rozmiar
- Czas żyć
Jednak nie potrzebuję bardziej zaawansowanych funkcji, takich jak:
- Dostęp z wielu procesów (serwer buforujący)
- Trwałość (na dysk)
Propozycje
Buforowanie w pamięci:
- Guava CacheBuilder - aktywny rozwój. Zobacz tę prezentację .
- LRUMap - Konfiguracja przez API. Brak TTL. Nie jest przeznaczony do buforowania.
- whirlycache - konfiguracja XML. Lista mailingowa. Ostatnia aktualizacja 2006.
- cache4j - konfiguracja XML. Dokumentacja w języku rosyjskim. Ostatnia aktualizacja 2006.
Buforowanie korporacyjne:
@Cacheable
z jcabi-Aspekty : yegor256.com/2014/08/03/cacheable-java-annotation.htmlOdpowiedzi:
EHCache jest bardzo fajny. Możesz utworzyć w pamięci podręcznej. Sprawdź ich przykłady kodu, aby zobaczyć przykład tworzenia w pamięci podręcznej. Możesz określić maksymalny rozmiar i czas życia.
EHCache oferuje zaawansowane funkcje, ale jeśli nie jesteś zainteresowany ich używaniem - nie rób tego. Ale miło jest wiedzieć, że tam są, jeśli Twoje wymagania kiedykolwiek się zmienią.
Oto w pamięci podręcznej. Utworzony w kodzie, bez plików konfiguracyjnych.
Tworzy pamięć podręczną, która pomieści 200 elementów i ma czas ttl wynoszący 24 godziny.
źródło
Naprawdę podoba mi się to,
MapMaker
co jest dostarczane z Google Guava ( API )JavaDoc ma całkiem fajny przykład, który demonstruje zarówno łatwość użycia, jak i możliwości:
Co więcej, wydanie 10.0 programu Guava wprowadziło znacznie bardziej rozbudowany
com.google.common.cache
pakiet (jest ładny wpis wiki o tym, jak ich używać ).źródło
Możesz również sprawdzić moją małą bibliotekę pamięci podręcznej o nazwie KittyCache pod adresem:
https://github.com/treeder/kitty-cache
Istnieją pewne testy wydajności w porównaniu z ehcache.
Jest używany w projekcie SimpleJPA jako pamięć podręczna drugiego poziomu.
źródło
Możesz sprawdzić LinkedHashMap, aby zaimplementować prostą pamięć podręczną bez słoików innych firm:
następnie możesz pobrać z pamięci podręcznej, jak
reszta pozostawiona jako ćwiczenie dla czytelnika :)
źródło
Guava za Kreator map zostało zastąpione przez ich CacheBuilder klasie.
źródło
JCS jest wypróbowany i prawdziwy. Mimo że jest lekki, jeśli chodzi o mechanizmy buforowania, możesz zagłębić się w rzeczywisty kod i naśladować to, co robią z HashMap pod osłonami, do dokładnie tego, czego potrzebujesz i nic więcej. Wygląda na to, że masz całkiem niezłe pojęcie o tym, czego szukasz.
źródło
memcached ma klienta dla Javy. http://www.danga.com/memcached/ Wymaga oddzielnego procesu, aby być serwerem buforującym, ale ma potężne możliwości.
źródło