Kali ini membahas ilmu baru yang juga permintaan dari mbak Shafira. Haha. 😀 Tema masih sama yaitu memaksimalkan performa web server sekaligus mengurangi beban kerja VPSnya dengan cache. Fokusnya kali ini adalah Redis yang aslinya adalah sebuah database server tapi aktif dalam memori. Mirip Memcached aslinya dan sama – sama bisa terdistribusi disebarkan dalam beberapa server.

Yang dilakukan Redis adalah menyimpan query – query SQL saat pengunjung mengakses situsnya dan kebanyakan akan sama isinya karena itu daripada selalu diproses oleh MySQL misalnya maka jauh lebih cepat dilayankan dari RAM langsung. Keunggulan Redis dibandingkan Memcached adalah fitur – fiturnya lebih lengkap dan kemampuannya mengolah datanya lebih besar. Tapi kalau hanya digunakan untuk cache database menirukan Memcached kurang lebih setara performanya.

Langkah 1: Persiapan dan instalasi Redis

Mari kita lanjutkan ke intinya. Saya menggunakan CentOS 6 dan perlu menambahkan repository EPEL juga REMI dahulu:

#Centos 6 32-bit
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
#CentOS 6 64-bit
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-6.rpm

Selanjutnya kita update dulu semua paket aplikasi yang sudah ada dalam CentOS:

yum -y update

Akhirnya kita install Redis dar Remi:

yum --enablerepo=remi install redis

Nanti akan otomatis menginstall dependensi jemalloc dari EPEL juga.

Pastikan ikut startup CentOS:

chkconfig redis on

Selesai sudah urusan instalasinya Redis. Tinggal setting – setting tambahannya.

Langkah 2: Pasang PHP Binding dan utak – atik konfigurasi Redis sebagai cache

Karena niatnya untuk cache website dan memanfaatkan PHP maka kita perlu menginstall ekstensinya:

yum --enablerepo=remi install php-redis

Ini supaya script PHP bisa berkomunikasi dengan Redis.

Pastikan dalam konfigurasi PHP pada /etc/php.ini sudah dimuat ekstensinya:

extension=redis.so

Kemudian edit setting Redis pada /etc/redis.conf:

maxmemory 256mb
maxmemory-policy allkeys-lru

Kita atur besar memori yang bisa digunakan Redis, dalam contoh 256MB. Sedangkan satunya adalah apa yang akan dilakukan kalau penuh, saya memilih allkeys-lru karena yang akan dibuang adalah yang sangat jarang dipanggil. Oh ya LRU adalah Least Recent Used artinya.

Setelahnya silahkan restart web server anda dan sekalian Redis:

#Apache
service httpd restart
#Nginx
service nginx restart
#Redis
service redis restart

Langkah 3: Cek Redis sudah aktif dan sambungan PHP dengan Redis

Jangan lupa anda harus menyambungkan script PHP atau CMS anda agar menggunakan Redis. Kalau ini kadang bisa dipermudah dengan menginstall plugin, saya sertakan linknya untuk CMS populer:

Redis menyediakan tool berbasis command line untuk mengetahui status cachenya, dan kita bisa manfaatkan untuk melihat apakah sudah benar aktif atau belum:

redis-cli monitor

Oh ya, defaultnya aktif di port 6379.

Selesai sudah! 🙂

Penutup

Tak kenal maka tak sayang kalau urusannya dengan Redis. Awalnya saya agak ragu karena takutnya lebih kompleks daripada Memcached. Redis itu dasarnya adalah database server in-memory tapi bisa difungsikan sebagai cache seperti Memcached. Ternyata tidak kalah mudahnya. Haha. 😀 Cuma repot di urusan cari repository yang tepat saja dan berharap pada CMS yang digunakan sudah ada yang membuatkan sambungannya.

Stack yang saya gunakan: Nginx 1.8, MariaDB 5.5, dan PHP 5.6. Aslinya tidak ada masalah pakai yang manapun karena Redis bisa berjalan sendiri, jadi mau pakai Nginx atau Apache tidak ada bedanya. Saya rencananya mencoba memasangkan untuk OpenLiteSpeed setelah ini karena web server satu ini tidak menggunakan PHP-FPM melainkan LSAPI buatannya sendiri, sehingga pasti ada yang lain nantinya. Hehe. 😀