Media Pengembangan Web & App | by APPKEY

Pembuatan Website Web Programming Panduan Pemula Untuk Redis dan Caching dengan Node JS

Panduan Pemula Untuk Redis dan Caching dengan Node JS

-

Dalam beberapa tahun terakhir, Redis telah menjadi kejadian umum di tumpukan aplikasi Node.js. Meskipun kasus penggunaannya yang paling populer adalah caching, Redis merupaka kasus penggunaan lain di mana Anda dapat memanfaatkan database dalam memori yang sangat cepat.

Pada tutorial ini, kami akan memberi Anda pengantar singkat tentang Redis. Kami juga akan memperkenalkan redis adalah penggunaan yang membuat cache sederhana untuk aplikasi Node guna melihat bagaimana pengaruhnya terhadap kinerjanya.

Apa itu Redis?

Redis memiliki sumber terbuka, penyimpanan struktur data dalam memori yang digunakan sebagai database, cache, dan perantara pesan.

Anda dapat menganggapnya sebagai database tanpa SQL, yang menyimpan data sebagai pasangan nilai kunci di memori sistem. Redis juga mendukung penyimpanan data persisten disk, jika diperlukan.

Redis memiliki dukungan untuk menyimpan beberapa struktur data dan tipe data, termasuk string, daftar, hash, set, dan set yang diurutkan. Struktur data yang didukung memberi Redis fleksibilitas untuk banyak kasus penggunaan.

Redis paling baik dalam situasi yang membutuhkan data untuk diambil dan dikirim ke klien dalam waktu yang paling singkat.

Kasus penggunaan Redis

Redis untuk penyimpanan dalam cache

Salah satu kasus penggunaan paling popular Redis adalah penyimpanan cache.

Apa itu caching?

Caching adalah proses menyimpan salinan data dalam cache untuk memungkinkan aplikasi mengakses dan mengambil data lebih cepat. Tujuan dari caching adalah mempercepat operasi akses data lebih baik daripada database, atau server jarak jauh dapat mengizinkan terutama berlaku untuk operasi yang mahal (dalam waktu).

Sebagai pengembang back-end, tugas kita adalah menyelesaikan permintaan klien secepat mungkin. Terkadang, kueri memerlukan beberapa operasi seperti mengambil data dari database, melakukan penghitungan, mengambil data tambahan dari layanan lain dll.

Di sinilah keunggulan caching karena dapat memproses data sekali, menyimpannya di cache dan kemudian mengambilnya kembali langsung dari cache tanpa melakukan semua operasi yang mahal.

Caching & Redis

redis-adalah-2

Karena Redis adalah database dalam memori, operasi akses datanya lebih cepat daripada yang dapat diberikan oleh database terikat disk lainnya. Itu menjadikan Redis adalah pilihan yang sempurna untuk penyimpanan dalam cache.

Dalam tutorial ini, kita akan melihat bagaimana melakukan caching dengan Redis dan Node.js.

Redis untuk analitik waktu nyata

Redis menjanjikan operasi pemrosesan data berdurasi sub-milidetik. Itu menjadikan Redis kandidat yang sempurna untuk aplikasi yang mengandalkan analisis data waktu nyata.

Misalnya, Anda dapat menggunakan Redis untuk menyimpan identitas pengguna dan detail transaksi mereka saat menerapkan layanan deteksi penipuan waktu nyata.

Redis bahkan menyediakan sistem penilaian transaksi lebih cepat yang didukung AI dan model statistik yang lebih cepat untuk melakukan kasus penggunaan ini dengan lebih baik.

Kasus penggunaan lain dalam analitik waktu nyata mencakup sistem manajemen inventaris waktu nyata dan papan peringkat game.

Artikel Terkait  Web Developer Adalah: Memahami tentang Web Development

Redis untuk manajemen sesi

Jika aplikasi Anda menggunakan sesi untuk melacak pengguna yang diautentikasi dan mengelola data khusus pengguna, Redis sangat cocok untuk digunakan sebagai penyimpanan sesi.

Menggunakan Redis dapat secara signifikan meningkatkan kinerja sistem sekaligus membuatnya lebih mudah untuk memproses data pengguna, termasuk kredensial, aktivitas terkini, dan bahkan sistem seperti keranjang belanja.

Redis sebagai Antrian

Anda dapat menggunakan Redis untuk mengantre tugas aplikasi yang membutuhkan waktu lama untuk diselesaikan. Anda dapat mengimplementasikan antrian FIDO (first-in, first-out) atau membuat antrian tertunda untuk menunda implementasi tugas hingga waktu yang telah dijadwalkan sebelumnya.

Caching dengan Node dan Redis

Sekarang, mari kita mulai dengan fokus utama dari tutorial ini: menggunakan Redis adalah untuk caching dalam aplikasi NodeJS.

Proses caching dengan Redis cukup sederhana. Saat kami menerima permintaan pengguna ke rute yang cache-nya diaktifkan, pertama-tama kami memeriksa apakah data yang diminta sudah disimpan di cache. Jika ya, kami dapat dengan cepat mengambil data dari Redis dan mengirimkan tanggapan.

Namun, jika data tidak disimpan di cache, yang kita sebut cache miss, pertama-tama kita harus mengambil data dari database atau API eksternal dan mengirimkannya ke klien.

Kami juga memastikan untuk menyimpan data yang diambil dalam cache sehingga saat berikutnya permintaan yang sama diterima, kami dapat dengan mudah mengirim data cache ke pengguna lebih cepat.

Sekarang setelah Anda memiliki gagasan yang jelas tentang apa yang akan kita lakukan, mari kita mulai penerapannya.

Pasang Redis

Jika Anda belum melakukannya, Anda perlu menginstal Redis untuk tutorial ini.

Anda dapat mengunduh binari dan mengkompilasinya dengan mudah menggunakan perintah berikut.

wget https://download.redis.io/releases/redis-6.0.9.tar.gz
tar xzf redis-6.0.9.tar.gz
cd redis-6.0.9
make
make install

Untuk memastikan bahwa server Redis berjalan tanpa masalah, kirim ping ke server menggunakan redis-cli.

redis-cli ping

Jika Anda menerima ping sebagai tanggapan, server Redis berjalan dengan sukses.

Bangun aplikasi NodeJS

Pengaturan dasar

Siapkan boilerplate awal untuk aplikasi Node seperti ini.

const express = require("express");
const axios = require("axios");
const redis = require("redis");
const app = express();

app.listen(process.env.PORT || 3000, () => {
console.log("Node server started");
});

Perhatikan bagaimana tutorial ini menggunakan dua paket tambahan bernama axios dan redis. Redis adalah klien Redis standar untuk Node. Tutorial ini menggunakan axios untuk mengambil data dari API eksternal untuk tutorial ini.

Sebelum melanjutkan, pastikan untuk menginstal kedua paket tersebut menggunakan npm.

npm install axios redis –save

Ambil data dari API eksternal

Tutorial ini akan menggunakan GitHub Jobs API untuk mendapatkan data terkait pekerjaan pemrograman yang tersedia di berbagai lokasi di dunia.

Anda dapat meneruskan istilah pencarian yang terkait dengan pekerjaan yang Anda cari ke API dan mengambil larik pekerjaan yang tersedia dalam format json. Contoh permintaan ke API terlihat seperti ini.

https://jobs.github.com/positions.json?search=node.js

Dalam aplikasi Node ini, kami mendefinisikan rute bernama /jobs, yang mengambil data pekerjaan dari API di atas dan mengirimkannya kembali ke klien.

const express = require("express");
const axios = require("axios");
const redis = require("redis");
const app = express();
app.get("/jobs", async (req, res) => {
const searchTerm = req.query.search;
try {
const jobs = await axios.get(`https://jobs.github.com/positions.json?search=${searchTerm}`);
res.status(200).send({
jobs: jobs.data,
});
} catch(err) {
res.status(500).send({message: err.message});
}
});
app.listen(process.env.PORT || 3000, () => {
console.log("Node server started");
});

Di sini, tutorial ini menggunakan axios untuk mengirim permintaan GET ke GitHub Jobs API dengan istilah pencarian yang disediakan pengguna.

Mari kita lihat bagaimana rute bekerja sekarang menggunakan Postman.

Artikel Terkait  Cara Terbaik Melindungi WordPress dengan Plugin Wordfence

Menyimpan hasil

Sekarang, mari kita lihat bagaimana kita dapat meningkatkan kinerja aplikasi dengan caching.

Pertama, kita perlu terhubung ke server Redis melalui aplikasi kita. Kami menggunakan paket redis yang diinstal untuk tugas ini.

const redisPort = 6379
const client = redis.createClient(redisPort);
//log error to the console if any occurs
client.on("error", (err) => {
console.log(err);
});

Server Redis adalah mendengarkan port 6379 secara default. Jadi, kami meneruskan nomor port untuk terhubung ke Redis dan membuat klien. Lalu buat logika untuk menyimpan dan mengambil data dari cache.

app.get("/jobs", (req, res) => {
const searchTerm = req.query.search;
try {
client.get(searchTerm, async (err, jobs) => {
if (err) throw err;
if (jobs) {
res.status(200).send({
jobs: JSON.parse(jobs),
message: "data retrieved from the cache"
});
} else {
const jobs = await axios.get(`https://jobs.github.com/positions.json?search=${searchTerm}`);
client.setex(searchTerm, 600, JSON.stringify(jobs.data));
res.status(200).send({
jobs: jobs.data,
message: "cache miss"
});
}
});
} catch(err) {
res.status(500).send({message: err.message});
}
});

Apa yang terjadi di sini?

web programming

Ketika kami menerima permintaan klien ke rute / pekerjaan, pertama, kami mendapatkan istilah pencarian dikirim dengan parameter kueri permintaan.

const searchTerm = req.query.search;

Kemudian, cobalah mengambil data yang diminta dari cache dengan meneruskan istilah pencarian, yang kami gunakan sebagai kunci saat menyimpan data di cache.  Paket Redis tidak memiliki dukungan asli untuk promise, jadi harus meneruskan callback untuk memproses data yang diambil.

client.get(searchTerm, async (err, jobs) => {
if (err) throw err;
});

Jika nilai yang dikembalikan dari Redis bukan null, itu berarti data terkait ada di cache, jadi mudah untuk mengembalikan data tersebut dalam respons. Pastikan Anda mengembalikan string ke JSON.

if (jobs) {
res.status(200).send({
jobs: JSON.parse(jobs),
message: "data retrieved from the cache"
});
}

Jika nilai yang dikembalikan adalah null, kita harus mengirim permintaan ke API eksternal untuk mengambil data yang relevan.

else {
const jobs = await axios.get(`https://jobs.github.com/positions.json?search=${searchTerm}`);
client.setex(searchTerm, 600, JSON.stringify(jobs.data));
res.status(200).send({
jobs: jobs.data,
message: "cache miss"
});
}

Ketika kami mendapatkan data dari API, sebelum mengirimnya kembali, kami menyimpannya di Redis sehingga saat permintaan yang sama dikirim ke server Node, ia dapat merespons dengan data yang disimpan di cache alih-alih memintanya dari API .

Perhatikan bagaimana kami menggunakan setex fungsi untuk menyimpan data di cache. Menggunakan setex fungsi secara khusus, alih-alih set fungsi reguler, kita dapat menyetel waktu kedaluwarsa ke pasangan nilai kunci yang disimpan. Karena kami menetapkan nilai untuk waktu kedaluwarsa, Redis akan secara otomatis menghapus pasangan nilai kunci itu dari cache saat waktu yang berlalu habis.

Kode sumber lengkap

const express = require("express");
const axios = require("axios");
const redis = require("redis");
const app = express();

const redisPort = 6379
const client = redis.createClient(redisPort);

client.on("error", (err) => {
console.log(err);
})

app.get("/jobs", (req, res) => {
const searchTerm = req.query.search;
try {
client.get(searchTerm, async (err, jobs) => {
if (err) throw err;
if (jobs) {
res.status(200).send({
jobs: JSON.parse(jobs),
message: "data retrieved from the cache"
});
}
else {
const jobs = await axios.get(`https://jobs.github.com/positions.json?search=${searchTerm}`);
client.setex(searchTerm, 600, JSON.stringify(jobs.data));
res.status(200).send({
jobs: jobs.data,
message: "cache miss"
});
}
});
} catch(err) {
res.status(500).send({message: err.message});
}
});
app.listen(process.env.PORT || 3000, () => {
console.log("Node server started");
});

Itu dia. Kami telah membuat cache sederhana untuk aplikasi kami. Itu tidak terlalu sulit, bukan?

Ringkasan

Dalam tutorial ini, kami memberi Anda pengenalan singkat tentang Redis dan membuat cache sederhana untuk aplikasi Node.js. Sekarang Anda dapat menggunakan Redis untuk menyimpan data yang sering ditanyakan di aplikasi Anda untuk mendapatkan peningkatan kinerja yang cukup besar.

Anda juga dapat melihat cara memanfaatkan fitur terbaik Redis dalam kasus penggunaan lain juga.

Terima kasih sudah membaca!


Jasa Pembuatan Aplikasi, Website dan Internet Marketing | PT APPKEY
PT APPKEY adalah perusahaan IT yang khusus membuat aplikasi Android, iOS dan mengembangkan sistem website. Kami juga memiliki pengetahuan dan wawasan dalam menjalankan pemasaran online sehingga diharapkan dapat membantu menyelesaikan permasalahan Anda.

Jasa Pembuatan Aplikasi

Jasa Pembuatan Website

Jasa Pembuatan Paket Aplikasi

Jasa Pembuatan Internet Marketing

Subscribe Sekarang

Dapatkan beragam informasi menarik tentang Website, Aplikasi, Desain, Video dan API langsung melalui email Anda. Subscribe sekarang dan terus belajar bersama kami!

Kategori

Blog Post Ranking 10

Rekomendasi 10 Aplikasi Pembuat Animasi 3D Terbaik. Ayo Cek!

Apakah Anda bercita-cita untuk menjadi seorang animator profesional? Belajar membuat animasi kini sudah menjadi hal mudah yang bisa dilakukan...

Cara Mudah Menambahkan Lokasi Alamat Bisnis Anda di Google Maps

Saat ingin hunting tempat makan atau tempat nongkrong terbaru, tak jarang beberapa dari Anda biasanya mendapatkan informasi terkini melalui...

Pengertian Internet & Dampak Positif dan Negatif Internet

Internet mungkin bukan sesuatu yang asing lagi, sebab semua kalangan pasti tahu apa itu internet. Hanya saja jika ditanya...

Proses Komunikasi: Encoding dan Decoding

Jika kita dapat melihat percakapan antar komputer, mungkin akan terlihat seperti ini: "010110111011101011010010110". Bahasa ini disebut dengan biner, encoding...

Metadata Adalah? Fungsi dan Jenis-Jenis Metadata

Pernah mendengar istilah metadata? Mungkin, kita sering mendengar istilah metadata. Tetapi, banyak dari kita yang belum tahu arti dari metadata...

Membuat Aplikasi di Playstore dengan Mudah

Membuat aplikasi di Playstore bisa Anda lakukan dengan mudah. Terdapat beberapa situs yang bisa membantu Anda untuk membuat aplikasi...

Jasa Pembuatan Website Untuk Toko Online

Perusahaan yang menyediakan Jasa pembuatan website untuk toko online bisa kita temukan dengan mudah di internet. Masing-masing dari perusahaan...

8 Contoh Search Engine Terbaik yang Paling Banyak Digunakan di Indonesia

Dulu jika ingin mencari informasi tentang apapun biasanya kita akan menanyakan kepada seseorang yang lebih mengetahui informasi, atau datang...

Looping Adalah Algoritma Perulangan: Berikut Contohnya

Jika anda sudah mendalami atau sedang mendalami dunia pemrograman terdapat sebuah konsep yang dapat memudahkan anda dalam menyusun struktur...

Domain Google? Apa Bedanya Dengan Domain Biasa?

Saat memutuskan untuk membuat website menjadi salah satu bentuk media digital marketing Anda dalam bersaing di zaman digital ini,...

Bisnis

Online Service

Peluang Bisnis

Model Bisnis

Entrepreneurship

Uang

Ketrampilan

Outsourcing

Monetize

Pemasaran

SEO

Internet Marketing

Dasar Pemasaran

Strategi Pemasaran

Situs Web Analitik

Iklan

Teknologi

Teknologi Terbaru

AI

Komputer

Jaringan

Paling Sering dibaca
Mungkin Anda Menyukainya