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.