Pertanyaan
Saya mencari API cache objek dalam memori Java. Ada rekomendasi? Solusi apa yang Anda gunakan di masa lalu?
Arus
Saat ini, saya hanya menggunakan Peta:
Map cache = new HashMap<String, Object>();
cache.put("key", value);
Persyaratan
Saya perlu memperluas cache untuk memasukkan fitur-fitur dasar seperti:
- Ukuran maksimal
- Waktunya untuk hidup
Namun, saya tidak membutuhkan fitur yang lebih canggih seperti:
- Akses dari banyak proses (caching server)
- Persistensi (ke disk)
Saran
Cache dalam Memori:
- Guava CacheBuilder - pengembangan aktif. Lihat presentasi ini .
- LRUMap - Konfigurasi melalui API. Tidak ada TTL. Tidak dibuat khusus untuk penyimpanan dalam cache.
- whirlycache - konfigurasi XML. Milis. Terakhir diperbarui tahun 2006.
- cache4j - konfigurasi XML. Dokumentasi dalam bahasa Rusia. Terakhir diperbarui tahun 2006.
Caching perusahaan:
@Cacheable
dari jcabi-aspect : yegor256.com/2014/08/03/cacheable-java-annotation.htmlJawaban:
EHCache sangat bagus. Anda dapat membuat cache di memori. Lihat contoh kode mereka untuk contoh pembuatan cache di memori. Anda dapat menentukan ukuran maksimal, dan waktu untuk hidup.
EHCache memang menawarkan beberapa fitur lanjutan, tetapi jika Anda tidak tertarik untuk menggunakannya - jangan. Tapi senang mengetahui mereka ada di sana jika kebutuhan Anda berubah.
Ini adalah cache di memori. Dibuat dalam kode, tanpa file konfigurasi.
Membuat cache yang akan menampung 200 elemen, dan memiliki ttl 24 jam.
sumber
Saya sangat suka
MapMaker
yang dilengkapi dengan Google Guava ( API )JavaDoc memiliki contoh yang cukup rapi yang menunjukkan kemudahan penggunaan dan kekuatannya:
Selanjutnya, melepaskan 10,0 Guava memperkenalkan lebih luas
com.google.common.cache
paket (ada entri wiki yang bagus tentang cara menggunakannya ).sumber
Anda juga dapat melihat pustaka cache kecil saya yang disebut KittyCache di:
https://github.com/treeder/kitty-cache
Ada beberapa tolok ukur kinerja vs ehcache.
Ini digunakan dalam proyek SimpleJPA sebagai cache tingkat kedua.
sumber
Anda dapat memeriksa LinkedHashMap untuk mengimplementasikan cache sederhana tanpa jars pihak ketiga:
maka Anda bisa mendapatkan dari cache seperti
istirahat tersisa sebagai latihan untuk pembaca :)
sumber
Pencipta Peta Guava telah digantikan oleh kelas CacheBuilder mereka .
sumber
JCS sudah teruji dan benar. Meskipun ringan sejauh mekanisme caching berjalan, Anda dapat menggali kode yang sebenarnya dan meniru apa yang mereka lakukan dengan HashMap di bawah sampul untuk apa yang Anda butuhkan dan tidak lebih. Anda tampaknya memiliki gagasan yang cukup bagus tentang apa yang Anda cari.
sumber
memcached memiliki klien untuk Java. http://www.danga.com/memcached/ Membutuhkan proses terpisah untuk menjadi server caching, tetapi sangat kuat.
sumber