Jika biasanya Memcached digunakan sebagai plugin WordPress untuk Object Cache, Pada panduan ini akan membahas cara menggunakan Memcached sebagai plugin di dalam MySQL sehingga menyediakan database NoSQL dengan kinerja yang lebih cepat.
Prerequisites
Untuk menggunakan plugin memcached, Anda perlu menginstall MySQL minimal versi 5.7 atau 8.0 yang bisa Anda dapatkan melalui repository atau mengunduh packagenya di situs resmi MySQL Community
Selanjutnya install package libevent
yum -y install libevent libevent-devel
Configure InnoDB memcached Plugin
Konfigurasikan daemon_memcached agar dapat berinteraksi dengan tabel InnoDB dengan menjalankan skrip innodb_memcached_config.sql
Akses MySQL sebagai user root
mysql -u root -p
Lalu jalankan perintah berikut.
source /usr/share/mysql-8.0/innodb_memcached_config.sql
Ini akan membuat database innodb_memcache
yang diperlukan daemon_memcached
serta database test
untuk pengujian.
Kemudian aktifkan plugin daemon_memcached
dengan perintah.
INSTALL PLUGIN daemon_memcached soname "libmemcached.so";
Setelah plugin terinstall maka daemon memcached sudah dapat digunakan. Cek listen IP dan port memcached dengan netstat
# netstat -plntu | grep -i mysql
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 1938/mysqld
tcp6 0 0 :::11211 :::* LISTEN 1938/mysqld
tcp6 0 0 :::33060 :::* LISTEN 1938/mysqld
tcp6 0 0 :::3306 :::* LISTEN 1938/mysqld
udp 0 0 0.0.0.0:11211 0.0.0.0:* 1938/mysqld
udp6 0 0 :::11211 :::* 1938/mysqld
Untuk membuatnya lebih aman, Anda dapat mengatur listen IP dan port pada file konfigurasi MySQL /etc/my.cnf
daemon_memcached_option="-p11222 -l 127.0.0.1"
Cek kembali listen IP dan port memcached.
# netstat -plntu | grep -i mysql
tcp 0 0 127.0.0.1:11222 0.0.0.0:* LISTEN 2316/mysqld
tcp6 0 0 :::33060 :::* LISTEN 2316/mysqld
tcp6 0 0 :::3306 :::* LISTEN 2316/mysqld
udp 0 0 127.0.0.1:11222 0.0.0.0:* 2316/mysqld
Test memcached Plugin
Akses memcached dengan telnet
telnet localhost 11211
Untuk mengambil data dari tabel demo_test dengan nilai kunci AA
.
get AA
Output
VALUE AA 8 12
Hello, Hello
END
Insert data menggunakan perintah set
set BB 10 0 16
GOODBYE, GOODBYE
Penjelasan:
set
adalah perintah untuk menyimpan atau menambah data.BB
adalah nilai kunci10
adalah flag untuk menunjukan jenis informasi ke klient memcached. beri nilai0
jika tidak digunakan.0
adalah waktu kadaluwarsa (TTL). beri nilai0
jika tidak digunakan.16
adalah panjang blok nilai yang ditentukan dalam byte.GOODBYE, GOODBYE
adalah data yang akan disimpan.
Verifikasi bahwa data telah tersimpan di MySQL pada table test.demo_test.
mysql> select * from test.demo_test;
+----+------------------+------+------+------+
| c1 | c2 | c3 | c4 | c5 |
+----+------------------+------+------+------+
| AA | Hello, Hello | 8 | 0 | 0 |
| BB | GOODBYE, GOODBYE | 10 | 6 | 0 |
+----+------------------+------+------+------+
2 rows in set (0.00 sec)
Kembali ke telnet
lalu test pengambilan data dengan nilai kunci BB
get BB
VALUE BB 10 16
GOODBYE, GOODBYE
END
Creating a New Table and Column Mapping
Untuk membuat database dan tabel Anda sendiri agar dapat digunakan dengan plugin daemon_memcached.
Buat database store
CREATE DATABASE `store`;
Selanjutnya buat tabel seperti berikut.
CREATE TABLE `user` (
`username` varchar(64) NOT NULL,
`password` varchar(64) DEFAULT NULL,
`secret_key` varchar(64) DEFAULT NULL,
`flags` int DEFAULT NULL,
`cas` bigint unsigned DEFAULT NULL,
`ttl` int DEFAULT NULL,
PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
Tabel yang dibuat harus menyertakan kolom flags
,cas
,ttl
.
Tambahkan tabel dan database yang telah dibuat ke dalam innodb_memcache.containers
.
use innodb_memcache
delete from containers;
insert into containers values ('user','store','user','username','password|secret_key','flags','cas','ttl','PRIMARY');
Setelah update table innodb_memcache.containers
, selanjutnya restart plugin daemon_memcache untuk menerapkan perubahan.
UNINSTALL PLUGIN daemon_memcached;
INSTALL PLUGIN daemon_memcached soname "libmemcached.so";
Test memcached
Menambah data.
set parman 0 0 14
123|123_admin
STORED
Mengambil data.
get parman
VALUE parman 0 14
123|123_admin