Bermain-main dengan FreeBSD Memcached Cara mengimplementasikan layanan caching data dalam memori
· 2 min read · Label UnixBSD
Pada tahun 2003, saat bekerja di LiveJournal Brad Fitzpatrick berhasil menciptakan Memcached. Ide awalnya adalah membuat Memcached, karena saat itu Fitzpatrick sedang berjuang dengan permintaan database yang lambat. Fitzpatrick membutuhkan cara untuk meningkatkan kinerja situs yang dikerjakannya. Ia berhasil mengembangkan Memcached sebagai lapisan caching yang ditempatkan di antara database dan aplikasi web, sehingga data yang sering diakses tersimpan dalam memori dan diambil dengan cepat.
Awalnya Memcached ditulis dalam Perl dan kemudian ditulis ulang dalam C. Dalam Memcached terdapat Backend yang memiliki satu tugas, yaitu menyimpan nilai-nilai kunci dalam memori. Aplikasi ini sangat sederhana, perusahaan-perusahaan besar seperti Netflix, Wikipedia dan Facebook telah menggunakan Memcached untuk meningkatkan kinerja situs web mereka.
Memcached adalah sistem caching objek memori terdistribusi yang gratis, open source, dan berkinerja tinggi. Dalam aplikasi web yang dinamis, penggunaan Memcached dapat mengurangi beban database dan meningkatkan kinerja situs.
Desain Memcached mampu menyimpan data dalam memori server, sehingga mempercepat waktu akses situs web. Hal ini menjadikannya pilihan ideal untuk aplikasi yang perlu menyimpan dan mengambil data dalam jumlah besar dengan cepat. Jadi tidak salah jika banyak perusahaan besar menggunakan Memcached sebagai solusi caching yang cepat dan efisien yang dapat mengurangi jumlah waktu yang dibutuhkan situs web atau aplikasi untuk mengambil data dari database.
Memcached dapat mengambil memori dari bagian sistem yang memiliki memori dalam jumlah besar dan dapat mengakses area yang memiliki memori lebih sedikit dari yang diperlukan. Memcached juga dapat memanfaatkan kapasitas memori dengan lebih baik. Lihat diagram di bawah ini yang mengimplementasikan dua skenario Memcached.
1. Setiap node sepenuhnya independen (atas).
2. Setiap node dapat menggunakan memori dari node lain (bawah).
Tutorial Memcached dalam artikel ini menjelaskan cara menginstal dan menggunakan Memcached pada server FreeBSD. Tutorial ini sangat bagus bagi Anda yang baru mengenal FreeBSD dan ingin meningkatkan kinerja situs web.
Untuk menginstal memcached di FreeBSD, pertama-tama jalankan perintah di bawah ini untuk memperbarui indeks paket PKG FreeBSD dan lanjutkan dengan menginstal dependensi Memcached.
Jalankan perintah port di bawah ini dan instal paket memcached pada FreeBSD dengan make install clean.
Setelah proses instalasi selesai, Anda jalankan perintah di bawah ini untuk mengaktifkan layanan Memcached, agar dapat berjalan secara otomatis, yaitu dengan menambahkan beberapa skrip Memcached.
Anda juga dapat memeriksa statistik memcached, seperti statistik baca dan tulis saat ini, statistik koneksi, dan juga statistik autentikasi.
Selain menggunakan perintah di atas, Anda juga dapat memverifikasi statistik memcached melalui perintah netcat atau nc seperti dalam contoh berikut.
Dalam bahasa PHP, ada dua ekstensi PECL PHP yang independen untuk bekerja dengan server Memcached, yaitu.
1. Memcache, ekstensi yang sangat ringan dengan fitur minimal, dikenal sangat cepat dan produktif dalam pengoperasian.
2. Memcached, Ekstensi ini memiliki fitur yang lengkap, sehingga dapat memberikan kemampuan penuh untuk bekerja dengan server Memcached. Ekstensi ini memiliki sintaksis yang sedikit berbeda pada beberapa parameter.
Dalam artikel ini, kita akan menggunakan sintaks ekstensi PECL-Memcached. Sebelum memulai pemeriksaan, pertama-tama instal pecl-memcache dengan mengikuti perintah di bawah ini.
Dengan perintah di konsol Anda dapat memeriksa apakah ekstensi PECL-Memcached terinstal di PHP.
Sekarang kita akan memeriksa operasi server Memcached dengan skrip PHP. Buat file PHP dan tulis skripnya, lalu jalankan.
Perintah Memcached sangat sederhana namun kuat. Desainnya yang sederhana berarti perintah ini berjalan cepat, memudahkan pengembangan, dan memecahkan banyak masalah yang dihadapi cache data besar. API Memcached juga tersedia untuk sebagian besar bahasa populer seperti Go dan Python.
Awalnya Memcached ditulis dalam Perl dan kemudian ditulis ulang dalam C. Dalam Memcached terdapat Backend yang memiliki satu tugas, yaitu menyimpan nilai-nilai kunci dalam memori. Aplikasi ini sangat sederhana, perusahaan-perusahaan besar seperti Netflix, Wikipedia dan Facebook telah menggunakan Memcached untuk meningkatkan kinerja situs web mereka.
Memcached adalah sistem caching objek memori terdistribusi yang gratis, open source, dan berkinerja tinggi. Dalam aplikasi web yang dinamis, penggunaan Memcached dapat mengurangi beban database dan meningkatkan kinerja situs.
Desain Memcached mampu menyimpan data dalam memori server, sehingga mempercepat waktu akses situs web. Hal ini menjadikannya pilihan ideal untuk aplikasi yang perlu menyimpan dan mengambil data dalam jumlah besar dengan cepat. Jadi tidak salah jika banyak perusahaan besar menggunakan Memcached sebagai solusi caching yang cepat dan efisien yang dapat mengurangi jumlah waktu yang dibutuhkan situs web atau aplikasi untuk mengambil data dari database.
Memcached dapat mengambil memori dari bagian sistem yang memiliki memori dalam jumlah besar dan dapat mengakses area yang memiliki memori lebih sedikit dari yang diperlukan. Memcached juga dapat memanfaatkan kapasitas memori dengan lebih baik. Lihat diagram di bawah ini yang mengimplementasikan dua skenario Memcached.
1. Setiap node sepenuhnya independen (atas).
2. Setiap node dapat menggunakan memori dari node lain (bawah).
Tutorial Memcached dalam artikel ini menjelaskan cara menginstal dan menggunakan Memcached pada server FreeBSD. Tutorial ini sangat bagus bagi Anda yang baru mengenal FreeBSD dan ingin meningkatkan kinerja situs web.
1. Cara Instal Memcached
Memcached adalah penyimpanan data kunci-nilai dalam memori yang dapat dijalankan pada sistem operasi MacOS, BSD, dan Linux. Di bagian ini, Anda akan menginstal memcached ke FreeBSD melalui pengelola paket PKG atau melalui sistem Ports.Untuk menginstal memcached di FreeBSD, pertama-tama jalankan perintah di bawah ini untuk memperbarui indeks paket PKG FreeBSD dan lanjutkan dengan menginstal dependensi Memcached.
Update paket PKG
proot@ns3:~ # pkg update -f
proot@ns3:~ # pkg upgrade -f
Instal dependensi
root@ns3:~ # root@ns3:~ # pkg install cyrus-sasl libevent rfc libxml2 libmemcached php82-pecl-memcached msgpack-c php82-pecl-msgpack
/usr/ports/databases/memcached
root@ns3:~ # cd /usr/ports/databases/memcached
root@ns3:/usr/ports/databases/memcached # make install clean
/etc/rc.conf
root@ns3:/usr/ports/databases/memcached # ee /etc/rc.conf
memcached_enable="YES"
memcached_user="nobody"
memcached_group="nobody"
memcached_flags="-l 192.168.5.2 -d -U 0 -m 512 -c 2048"
Opsi bendera Memcached yang digunakan:
Setelah Anda mengonfigurasi memcached, jalankan Memcached dengan perintah layanan.
Pada FreeBSD secara default Memcached berjalan pada port 1121, jalankan perintah sockstat untuk memverifikasi port memcached 1121.
- -l = 192.168.5.80: Jalankan layanan memcached pada alamat IP 192.168.5.2
- -U 0 = Nonaktifkan memcached pada port UDP.
- -d = Jalankan memcached di latar belakang.
- -c = 2048: Atur koneksi maksimum ke 2048.
- -m = Atur memori maksimum ke 512 MB.
/etc/rc.conf
root@ns3:/usr/ports/databases/memcached # sysrc -a | grep memcached
memcached_enable: YES
memcached_flags: -l 192.168.5.2 -d -U 0 -m 512 -c 2048
memcached_group: nobody
memcached_user: nobody
Run memcached
root@ns3:~ # service memcached restart
root@ns3:~ # service memcached status
Verify memcached port 1121
root@ns3:~ # sockstat -4 | grep 11211
nobody memcached 42237 16 tcp4 192.168.5.2:11211 *:*
2. Menguji Koneksi Memcached
Sekarang server FreeBSD Anda telah terinstal memcached dan berjalan normal. Selanjutnya, verifikasi memcached melalui alat memcached dan utilitas netcat. Alat memcached adalah aplikasi berbasis Perl untuk memeriksa statistik dan mengelola memcached yang terdapat dalam paket memcached. Anda tidak perlu menginstal utilitas tersebut, karena utilitas tersebut terinstal secara otomatis saat Anda menginstal Memcached. Ikuti perintah berikut untuk menguji dan memverifikasi memcached menggunakan alat memcached.Test and verify memcached
root@ns3:~ # memcached-tool 192.168.5.2 settings
Check memcached statistics
root@ns3:~ # memcached-tool 192.168.5.2 stats
Check memcached statistics
root@ns3:~ # echo stats | nc 192.168.5.2 11211
3. Pengujian Dengan PHP pecl-memcache
Setelah kami memeriksa koneksi Memcached tidak ada masalah atau Memcached dapat berjalan normal di FeeeBSD. Anda juga dapat melakukan pemeriksaan Memcached dengan PHP. Pemeriksaan ini bertujuan untuk memastikan aplikasi yang berjalan dengan PHP dapat terhubung ke Memcached, seperti WordPress, Joomla, Drupal, dan situs web lainnya.Dalam bahasa PHP, ada dua ekstensi PECL PHP yang independen untuk bekerja dengan server Memcached, yaitu.
1. Memcache, ekstensi yang sangat ringan dengan fitur minimal, dikenal sangat cepat dan produktif dalam pengoperasian.
2. Memcached, Ekstensi ini memiliki fitur yang lengkap, sehingga dapat memberikan kemampuan penuh untuk bekerja dengan server Memcached. Ekstensi ini memiliki sintaksis yang sedikit berbeda pada beberapa parameter.
Dalam artikel ini, kita akan menggunakan sintaks ekstensi PECL-Memcached. Sebelum memulai pemeriksaan, pertama-tama instal pecl-memcache dengan mengikuti perintah di bawah ini.
/usr/ports/databases/pecl-memcache
root@ns3:~ # cd /usr/ports/databases/pecl-memcache
root@ns3:/usr/ports/databases/pecl-memcache # make install clean
Check PECL-Memcached
root@ns3:~ # php -i | grep memcached
/usr/local/etc/php/ext-30-memcached.ini,
memcached
memcached support => enabled
libmemcached-awesome version => 1.1.4
memcached.compression_factor => 1.3 => 1.3
memcached.compression_threshold => 2000 => 2000
memcached.compression_type => fastlz => fastlz
memcached.default_binary_protocol => Off => Off
memcached.default_connect_timeout => 0 => 0
memcached.default_consistent_hash => Off => Off
memcached.serializer => php => php
memcached.sess_binary_protocol => On => On
memcached.sess_connect_timeout => 0 => 0
memcached.sess_consistent_hash => On => On
memcached.sess_consistent_hash_type => ketama => ketama
memcached.sess_lock_expire => 0 => 0
memcached.sess_lock_max_wait => not set => not set
memcached.sess_lock_retries => 5 => 5
memcached.sess_lock_wait => not set => not set
memcached.sess_lock_wait_max => 150 => 150
memcached.sess_lock_wait_min => 150 => 150
memcached.sess_locking => On => On
memcached.sess_number_of_replicas => 0 => 0
memcached.sess_persistent => Off => Off
memcached.sess_prefix => memc.sess.key. => memc.sess.key.
memcached.sess_randomize_replica_read => Off => Off
memcached.sess_remove_failed_servers => Off => Off
memcached.sess_sasl_password => no value => no value
memcached.sess_sasl_username => no value => no value
memcached.sess_server_failure_limit => 0 => 0
memcached.store_retry_count => 0 => 0
Registered save handlers => files user memcache memcached
/usr/local/www/apache24/data
root@ns3:~ # cd /usr/local/www/apache24/data
root@ns3:/usr/local/www/apache24/data # ee test.php
<?php
$memcache = new Memcache;
$memcache->connect('192.168.5.2', 11211) or die ("Could not connect");
$version = $memcache->getVersion();
echo "Server's version: ".$version."
\n";
$tmp_object = new stdClass;
$tmp_object->str_attr = 'test';
$tmp_object->int_attr = 123;
$memcache->set('key', $tmp_object, false, 10) or die ("Failed to save data at the server");
echo "Store data in the cache (data will expire in 10 seconds)
\n";
$get_result = $memcache->get('key');
echo "Data from the cache:
\n";
var_dump($get_result);
?>
Run test.php file
root@ns3:/usr/local/www/apache24/data # php test.php
Contoh lain, tulis skrip berikut./usr/local/www/apache24/data
root@ns3:/usr/local/www/apache24/data # ee test2.php
<?php
$memcache = new Memcache;
$memcache->connect('192.168.5.2', 11211) or die ("Can't connect");
$time_start = microtime(true);
for($i=0;$i<1000000;$i++) {
$memcache->set('key' . $i, 'MyTestString', false, 3600) or die ("Storing error");
}
echo "Wrire: " . ( microtime(true) - $time_start ) . " seconds\n";
$time_start = microtime(true);
for($i=0;$i<1000000;$i++) {
$get_result = $memcache->get('key' . $i);
}
echo "Read: " . ( microtime(true) - $time_start ) . " seconds\n";
?>
Silahkan Berkomentar, Kakak...! Bunda...!
Posting Komentar