Java Cache - Part 2
Pendahuluan awal mengenai Cache bisa dilihat di Java Cache
Java Caching API
Java Caching API ini punya 5 interface yang bisa diimplementasikan oleh library implementornya.
Ke 5 interface itu :
- CachingProvider
- CacheManager
- Cache
- Entry
- ExpiryPolicy
Penjelasannya :
1. CachingProvider
CachingProvider lebih kepada mekanisme untuk mengelola zero atau lebih CacheManager.
Mengelola CacheManager ini maksudnya :
- Memilih/acquire sebuah CacheManager instance.
- Menginisiasi CacheManager yang dipilih, bisa ditentukan dengan alamat URIs, atau dengan konfigurasi sepesifik implementasinya.
- Mengontrol cacheManager dan operasionalnya, termasuk untuk mendapatkan fitur-fitur yang dipunyai oleh CacheManager.
- Menutup koneksi dan release CacheManager.
- Mengelola banyak CacheManager yang ada pada saat runtime.
Ingat, satu CachingProvider bisa mengelola zero atau lebih CacheManager.
Contoh code nya :
// akses ke CachingProvider
CachingProvider provider = Caching.getCachingProvider();
// kalau pakai default Cache Manager
CacheManager manager = provider.getCacheManager();
// kalau pakai konfigurasi cahe manager
CacheManager manager = provider.getCacheManager(“/sample/ConfigurationFile.xml”);
2. CacheManager
CacheManager merupakan antarmuka untuk mengelola Cache
CacheManager ini merupakan mekanisme utama dalam mendapatkan data-data yang ada di Cache.
CacheManager juga akan mengelola Cache baik creationnya, lifecycle maupun aksesnya.
Oleh karena itu, maka CacheManager ini merupakan object yang cukup kompleks baik dalam konstruksi maupun dalam operasionalnya.
Sehingga biasanya cuma ada satu CacheManager yang digunakan untuk satu JVM.
Implementasi dari CacheManager juga bisa bermacam-macam, tergantung implementornya.
Kalau kita lihat di Spring Boot framework, maka implementor dari CacheManager ini bisa saja :
- CaffeineCacheManager
- ConcurrentMapCacheManager
- EhCacheCacheManager
- JCacheCacheManager
- SimpleCacheManager
- NoOpCacheManager
- CompositeCacheManager
- dll
perbedaannya yaa tergantung dari implementasi dari tiap-tiap perusahaan atau organisasi yang membuat implementasinya tersebut.
Tetapi mereka tetap comply dengan standar JSR-107 dengan mengimplementasikan interface yang disediakan oleh JSR 107 tersebut.
Intinya, CacheManager ini merupakan objek utama dalam membuat Cache, mengelola siklus hidup Cache, dan aksesnya.
3. Cache
Cache merupakan struktur data mirip dengan Map.
Berisikan data dalam bentuk key, value.
Bersifat sementara, karena ada masa kadaluarsa dari key valuenya.
Datanya ini biasanya disimpan dalam bentuk struktur data yang cepat diakses, yaitu di memori komputer.
Di dalam Cache ini , data-data yang dibutuhkan oleh aplikasi secara berulang-ulang atau butuh biaya yang “mahal” akan disimpan dalam jangka waktu tertentu.
Tipe data javax.cache.Cache ini mempunyai method hampir sama dengan Map, yaitu :
Method | Fungsi nya |
---|---|
put | menambahkan satu entry (key:value) ke sebuah cache |
putAll | menambahkan banyak entry (key:value) ke sebuah cache |
containsKey | mencek apakah ada sebuah key dalam sebuah cache. |
get | mengambil sebuah value dari sebuah cache spesifik terhadap key |
getAll | mengambil semua value dari sebuah cache spesifik terhadap key |
replace | mengganti isi value dari cache spesifik terhadap key |
remove | remove satu entry di cache. |
removeAll | remove semua entry di cache. |
4. Entry
Entry merupakan satu data/record didalam Cache.
Satu data ini berupa key dan value.
5. ExpiryPolicy
ExpiryPolicy merupakan konfigurasi dari Cache mengenai berapa lama sebuah Entry disimpan.
Selama masih belum kadaluarsa, maka Entry dalam Cache bisa diakses, diupdate, dideleted.
Setelah kadaluarsa, maka Entry ini disebut kadaluarsa, sehingga tidak bisa lagi diakses.