Cache
Saat ini, driver Obeject Cache yang sudah tersedia adalah APC, Memcache dan Memcached.
Sebelum menggunakan library cache, terlebih dahulu harus dilakukan konfigurasi. Bagian konfigurasi database terletak pada file app/config/cache.php.
Konfigurasi
Bagian-bagian yang harus dilengkapi namaKoneksi dan driver.
Saat ini pilihan driver yang tersedia adalah apc, memcache dan memcached.
Sebagai contoh, konfigurasi di atas adalah jika ingin mengunakan APC sebagai cache.
Nilai default pada konfigurasi menunjukan koneksi cache default. Jika Anda menginginkan koneksi cache yang lain silahkan tambahkan nama baru pada bagian ini. Sebagai contoh:
Inisialisasi
Berikut adalah contoh membuat instance untuk Cache baik itu di dalam model ataupun controller:
Method
Untuk berinteraksi dengan cache driver, berikut adalah API yang tersedia:
setValue
Melakukan penyimpanan data yang akan di-cache.
mix $this->cache->setValue($key, $value, $expire = 0, $namespace = false);
Parameter
Variable | Tipe Data | Keterangan |
---|---|---|
$key | string | Nama key unik sebagai identifier cache. |
$value | mix | Nilai yang akan disimpan ke dalam cache. |
$expire | int | Berapa lama cache akan disimpan dalam satuan detik. |
$namespace | string | Key dari namespace yang ingin digunakan. |
addValue
Melakukan penyimpanan data yang akan di-cache hanya jika key yang diberikan belum pernah digunakan sebelumnya. Jika ternyata key-nya sudah digunakan maka nilai returnnya adalah false.
mix $this->cache->addValue($key, $value, $expire = 0, $namespace = false);
Parameter
Variable | Tipe Data | Keterangan |
---|---|---|
$key | string | Nama key unik sebagai identifier cache. |
$value | mix | Nilai yang akan disimpan ke dalam cache. |
$expire | int | Berapa lama cache akan disimpan dalam satuan detik. |
$namespace | string | Key dari namespace yang ingin digunakan. |
updateValue
Melakukan update data yang sudah di-cache berdasarkan key yang diberikan.
mix $this->cache->updateValue($key, $value, $expire = 0, $namespace = false);
Parameter
Variable | Tipe Data | Keterangan |
---|---|---|
$key | string | Nama key unik sebagai identifier cache. |
$value | mix | Nilai yang akan disimpan ke dalam cache. |
$expire | int | Berapa lama cache akan disimpan dalam satuan detik. |
$namespace | string | Key dari namespace yang ingin digunakan. |
getValue
Mendapatkan data yang sudah di-cache berdasarkan key yang diberikan.
mix $this->cache->getValue($key, $namespace = false);
Parameter
Variable | Tipe Data | Keterangan |
---|---|---|
$key | string | Nama key unik sebagai identifier cache. |
$namespace | string | Key dari namespace yang ingin digunakan. |
deleteValue
Menghapus data yang sudah di-cache berdasarkan key yang diberikan.
mix $this->cache->deleteValue($key, $namespace = false);
Parameter
Variable | Tipe Data | Keterangan |
---|---|---|
$key | string | Nama key unik sebagai identifier cache. |
$namespace | string | Key dari namespace yang ingin digunakan. |
flushValues
Menghapus semua data yang sudah di-cache.
bool $this->cache->flushValues();
incrementBy
Melakukan penambahan secara interval dengan nilai tertentu.
int $this->cache->incrementBy($key, $offset = 1);
Parameter
Variable | Tipe Data | Keterangan |
---|---|---|
$key | string | Nama key unik sebagai identifier nilai. |
$offset | int | Nilai penambah. |
decrementBy
Melakukan pengurangan secara interval dengan nilai tertentu.
int $this->cache->decrementBy($key, $offset = 1);
Parameter
Variable | Tipe Data | Keterangan |
---|---|---|
$key | string | Nama key unik sebagai identifier nilai. |
$offset | int | Nilai penambah. |
Namespace
Namespace bisa dignakan jika Anda ingin melakukan modifikasi data cache dengan beberapa key yang berbeda-beda secara bersamaan.
Sebagai contoh jika ada sebuah data yang Anda tampilkan dengan cara paging. Setiap halaman dapat menampung 10 data dimana data ini kemudian disimpan ke dalam cache. Key dari masing-masing halaman misalnya comment_page_1, comment_page_2, comment_page_3 ... dst. Jika ada data baru yang ingin ditambahkan dan semua data ini perlu di flush, maka untuk melakukan hal ini cukup dengan menghapus namespace-nya saja. Berikut adalah contohnya:
API Spesifik Driver
Selain dari API yang sudah disediakan, Anda juga bisa menggunakan API yang tersedia dari masing-masing driver.