Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Python
Code

Cara Melakukan Cache Menggunakan Redis di Aplikasi Django

by
Difficulty:IntermediateLength:MediumLanguages:

Indonesian (Bahasa Indonesia) translation by ⚡ Rova Rindrata (you can also view the original English article)

Salah satu cara untuk menghilangkan ketegangan pada server adalah dengan melakukan cache data. Ini dilakukan dengan melakukan cache data setelah diproses dan kemudian melayaninya dari cache pada saat diminta. Tutorial ini akan memberikan pembahasan rinci tentang Redis, menjelaskan cara menginstal Redis dan melakukan cache data dalam aplikasi Python.

Pengantar Redis dan Caching

Caching mengacu pada penyimpanan respons server di klien itu sendiri, sehingga klien tidak perlu membuat permintaan server untuk sumber daya yang sama berulang-ulang. Respons server harus memiliki informasi tentang bagaimana caching harus dilakukan, sehingga klien menyimpan respons dalam cache untuk jangka waktu tertentu atau tidak perlu menyimpan respons server dalam cache.

Cache, di sisi lain, adalah komponen perangkat keras atau perangkat lunak yang digunakan untuk menyimpan data sehingga permintaan di masa mendatang untuk data yang sama dapat dilayani lebih cepat.

Di masa ini di mana pengguna mengharapkan hasil dalam satu detik, adalah bijaksana untuk melayani permintaan dengan membaca data dari cache, yang pada akhirnya lebih cepat daripada membaca dari penyimpanan data yang lebih lambat; dengan demikian, kinerja sistem tergantung pada berapa banyak permintaan yang dapat dilayani dari cache.

Redis bersifat sumber-terbuka, penyimpanan struktur data dalam memori, digunakan sebagai database, cache, dan perantara pesan. Ia bekerja dengan menyimpan data dalam cache dan menyediakannya saat diminta, daripada melakukan kueri database setiap saat.

Menginstal Redis

Langkah pertama adalah membuat Redis aktif dan berjalan secara lokal di komputer Anda. Cara paling mudah untuk menginstal Redis adalah melalui pengelola paket sistem operasi seperti ini:

Anda juga dapat mengikuti instruksi dari situs Redis resmi.

Unduh dan ekstrak tar Redis 4.0.6 sebagai berikut:

Binari yang sekarang dikompilasi tersedia di direktori src. Jalankan Redis dengan:

Anda dapat berinteraksi dengan Redis menggunakan klien bawaan:

Untuk memeriksa apakah server redis sedang berjalan, jalankan perintah berikut di terminal:

Contoh API Django

Mari kita buat proyek Django kita. Proyek kita akan dapat menyimpan cache semua produk di toko, sehingga mudah dan cepat untuk mengambil data dalam kueri berikutnya.

Untuk memanfaatkan Redis di aplikasi kita, kita perlu melakukan hal berikut:

  1. Periksa apakah hasil untuk kueri saat ini ada di cache.
  2. Jika hasilnya ada di cache, ambil mereka.
  3. Jika hasilnya tidak ada, ambil, simpan di cache, dan kemudian teruskan ke entitas yang meminta.

Persyaratan

  • Django
  • django-redis
  • Redis
  • loadtest

Membuat Proyek Anda

Sebelum memulai, buat direktori dan instal lingkungan virtual. Lingkungan virtual akan memungkinkan Anda menginstal versi perpustakaan yang dibutuhkan oleh aplikasi Anda.

Selanjutnya, aktifkan lingkungan virtual dan instal persyaratan proyek.

Membuat Proyek Django

Buat aplikasi baru bernama store, yang akan menangani pengelolaan produk di toko kita.

Tambahkan aplikasi store dan rest_framework ke daftar aplikasi yang diinstal di file settings.py.

Membuat Model

Di store/models.py, kita mulai dengan membuat model Product untuk menyimpan rincian produk sebagai berikut:

Migrasi

Buat migrasi awal untuk model produk kita, dan sinkronkan database untuk pertama kalinya.

Membuat superuser

Buat superuser, masuk ke panel admin, dan isi database Anda dengan beberapa contoh data yang akan kita gunakan untuk melakukan pengujian kita.

Mengonfigurasi Redis dalam Aplikasi Python

Untuk menggunakan Redis dengan aplikasi Django, kita perlu mengatur Redis untuk menyimpan data cache aplikasi. Dan berikut ini ke file settings.py Anda:

Selanjutnya, kita akan membuat endpoint yang mengambil semua produk dari database kita. Kita pertama akan menguji kinerja aplikasi dalam hal berapa lama waktu yang dibutuhkan untuk mengambil data dari database tanpa caching. Kita kemudian akan mengimplementasikan endpoint lain yang mengambil data dari cache dan membandingkan kinerjanya.

Di store/views.py, tambahkan kode berikut yang mengambil semua produk yang ada dalam database.

Mengkonfigurasi URL

Buat file store/urls.py dan tambahkan kode berikut.

Kita juga perlu mengimpor URL dari aplikasi pengguna ke file django_cache/urls.py utama.

Mari lakukan pengujian dan melihat apakah kita ada di jalur. Kita akan menggunakan loadtest. Jika Anda tidak akrab dengan loadtest, ini adalah alat untuk menguji kinerja.

Menginstal loadtest sebagai root sangatlah sederhana:

Seperti yang terlihat dari atas, 55 permintaan diproses per detik.

Mari kita buat endpoint lain untuk mengambil data setelah caching dengan Redis. Edit users/views.py untuk mencocokkan yang berikut:

Kode di atas akan memeriksa apakah produk kunci ada dalam cache, dan jika ditemukan, data yang direpresentasikan akan dikembalikan ke browser. Jika tidak ada data di cache, pertama-tama kita mengambil data dari database, menyimpannya di cache, dan kemudian mengembalikan data yang diminta ke browser.

Perbarui store/urls.py sebagai berikut.

Mari melakukan pengujian.

Saat pertama kali Anda menuju localhost endpoint:8000/store/cache, aplikasi akan melakukan kueri dari database dan mengembalikan data, tetapi panggilan selanjutnya ke URL akan melewati database dan melakukan kueri dari cache karena data sudah tersedia di cache.

Kesimpulan

Dalam tutorial ini, kita menggunakan Redis untuk memberikan aplikasi sebuah ilusi kecepatan. Kita memanfaatkan penggunaan RAM di Redis untuk menyimpan hasil kueri dan kemudian mengembalikan hasil tersebut dari cache dalam kueri berikutnya daripada melakukan perjalanan pulang pergi ke database.

Ada alat caching lain yang tersedia, seperti Memcached, yang mirip dengan Redis. Namun, Redis lebih populer daripada Memcached karena hanya perlu beberapa menit untuk menyiapkan dan bekerja di aplikasi. Redis memiliki mekanisme yang lebih canggih karena dideskripsikan sebagai "penyimpanan struktur data", sehingga membuatnya lebih kuat dan fleksibel. Redis juga memiliki keuntungan yang lebih besar karena Anda dapat menyimpan data dalam bentuk apa pun.

Semoga, tutorial ini telah menunjukkan kepada Anda betapa mudahnya menambahkan lapisan caching ke aplikasi Anda, sehingga meningkatkan kinerjanya. Caching harus menjadi sesuatu yang perlu dipertimbangkan ketika Anda perlu mengurangi waktu pemuatan dan biaya server.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.