Menggunakan Memcached di PHP

Buat: 04/26/2013 - 14:30
Menggunakan Memcached di PHP

Memcached adalah memory-object-caching-system, bersifat umum, dimaksudkan untuk digunakan dalam mempercepat aplikasi web dinamis dengan meringankan beban database. Memcached bekerja sebagai semacam hash atau array asosiasi yang dapat menyimpan data berupa string, integer atau bahkan object. Data hash ini disimpan didalam memori komputer (RAM) hingga sangat cepat untuk diakses.

Perlu diketahui sebelumnya bahwa hash berfungsi untuk menjadi identitas atau semacam sidik jari dari suatu data, hash ini dapat diimplementasikan untuk data berapapun panjangnya dan menghasilkan ukuran/panjang yang tetap.

Misal kita melakukan query ke database untuk mengambil daftar teman (friendlist) si A, kita akan mengambil data dari database dan menyimpannya dalam memcached, lalu ketika query berikutnya untuk mengambil daftar friendlist si A maka data tersebut akan diambil dari memcached sehingga tidak akan memberatkan database server. Seperti kerja pada RAM komputer, data yang telah tersimpan sementara di RAM tidak perlu diambil lagi dari dalam hardisk karena akan memakan waktu akses data yang lebih lama.

Install Memcached di windows

  1. Download memcached server untuk windows disini : http://code.jellycan.com/memcached direct link http://code.jellycan.com/files/memcached-1.2.6-win32-bin.zip , kemudian extrak file zip tersebut ke drive D:/ atau terserah anda.
  2. Selanjutnya kita install memcached.exe dengan cara: buka command prompt sebagai administrator kemudian tuliskan perintah seperti gambar di bawah ini :
  3. Buka file php.ini, ganti baris
    ;extension=php_memcache.dll
    menjadi
    extension=php_memcache.dll
    Kemudian tambahkan :
    [Memcache]  
    memcache.allow_failover = 1 
    memcache.max_failover_attempts=20 
    memcache.chunk_size =8192 
    memcache.default_port = 11211
  4. Restart webserver anda.



Contoh penggunaan memcached di PHP

Buat file baru "set.php" dan dibawah ini adalah contoh coding nya :

1.   <?php
2. $memcache = new Memcache;
3.    $memcache->connect('localhost', 11211) or die ("Could not connect");
4.  
5.    $data = array( 'nim'=>'0612502526',
6.                  'nama'=>'faiz fadly',
7.                   'email'=>'[email protected]',
8.                );
9.    
10.   $key = md5("0612502526");
11.  //simpan ke cache
12.  $memcache->set($key, $data);
13. echo "data berhasil di simpan di memchaced<br>";
14.    var_dump($data);
15.    ?>
Code di atas untuk menyimpan data ke server memcached ($memcache->set($key, $data);) buat satu file lagi .php satu lagi "get.php" dan ini contoh code-nya :
1.   <?php
2. //koneksi ke memcahce
3.    $memcache = new Memcache;
4.    $memcache->connect('localhost', 11211) or die ("Could not connect");
5. 
6. $key = md5("0612502526");
7.  //Ambil dari cache
8.   $get_result = $memcache->get($key);
9.   echo "Data dari  cache:<br/>";
10.  
11.   var_dump($get_result);
12.  ?>
Dan coding berikut -> $memcache->delete($key); untuk menghapus data dari cache.silahkan di coba sendiri.

Caching hasil Query dengan Memcached

1.   <?php
2. 
3.    //koneksi ke database
4.    $dbh = new PDO("mysql:host=localhost;dbname=test", "root", "");
5.    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
6.    
7.    //koneksi Memcached
8.  $memcache = new Memcache;
9.    $memcache->connect('localhost', 11211) or die ("Could not connect");
10. 
11.   
12.   $key = md5("0612502526"); // Unique Words
13. $cache_result = array();
14.    
15.   //ambil data dari cache
16. $cache_result = $memcache->get($key);
17.    
18.   if($cache_result)
19.   {
20.           $pesan = "dari cache<br>";
21.          $demo_result = $cache_result;
22.   }
23.   else
24.    {
25.           try {
26.                   $stmt = $dbh->prepare("SELECT * FROM mahasiswa WHERE nim=?");
27.                  $stmt->execute(array("0612502526"));
28.                   $demo_result = $stmt->fetchAll(PDO::FETCH_ASSOC);
29.    
30.                   $pesan = "dari database<br>";
31.                   //simpan data ke cache dari hasil Query
32.                 $memcache->set($key, $demo_result, MEMCACHE_COMPRESSED, 1200);
33.                 
34.         } catch(PDOException $e) {
35.                  echo $e->getMessage();
36.           }
37.   
38.   }
39.   
40.   echo $pesan;
41.    var_dump($demo_result);
42. 
43.   ?>
Demikian Tutorial sederhana ini, semoga bermanfaat. Tetap sehat, tetap semangat biar bisa koding dan berbagi.

About Author

Tentang PHP Indonesia

PHP Indonesia adalah sebuah komunitas untuk semua orang yang mencintai PHP. Fokus utama kami adalah pemrograman menggunakan bahasa PHP, namun tidak menutup kemungkinan pembahasan yang mencakup keseluruhan LAMP stack. Topik bisa dari pemrograman PHP, penanganan memcached, optimasi database, konfigurasi server, tuning server web, application deployment, framework PHP, hosting pilihan dan sebagainya.

Petunjuk Penulisan

Berikut ini adalah beberapa petunjuk penulisan artikel. Petunjuk dibuat bukan untuk membatasi tetapi demi menjaga kualitas artikel yang terpublikasi di situs ini. Selain itu, keseragaman gaya bahasa dapat menjaga readibilitas (tingkat keterbacaan) sehingga pembaca akan lebih nyaman dalam membaca artikel di situs ini.