Redis University RU102J - Minggu Pertama

Redis University RU102J - Minggu Pertama

Ini adalah catatan minggu pertama dari apa yang saya pelajari di kelas RU102J-nya Redis University yang berjudul "Redis for Java Developers".

Seperti judulnya, para peserta diajarkan best-practice menggunakan Redis pada aplikasi berbasis Java. Disini peserta akan dituntun untuk membuat aplikasi Redis Solar, yaitu aplikasi untuk memonitoring panel surya berbasis web menggunakan Java framework Dropwizard sebagai back-end dan Vue.js sebagai front-end frameworknya.

Kelas RU102J yang saya ikuti ini dimulai pada 7 Agustus 2019, dan akan berjalan selama 5 minggu dimana 4 minggu pertama adalah pembelajaran, dan minggu terakhir adalah ujian. Pada 4 minggu pertama, peserta dibagikan materi berupa video, quiz, dan diakhiri dengan PR mingguan. Nilai dari PR mingguan akan diakumulasikan pada nilai akhir, jika nilai akhir mencapai 65% atau lebih, peserta akan diberikan sertifikat penyelesaian dari Redis University.

Sebagaimana kelas Redis University lainnya, RU102J juga memberikan Virtual Lab di setiap minggunya yang sudah terinstall redis beserta java environmentnya.

Selain menggunakan Virtual Lab, kelas ini juga sudah menyediakan docker image untuk peserta yang ingin menjalankan aplikasi di komputernya sendiri.

Catatan RU102J Minggu Pertama

Pada minggu pertama ini pembahasannya hanya seputar setup environment, pengenalan Redis Client, serta pengenalan DAO pattern.

Untuk setup environment saya rasa tidak perlu saya catat disini, karena itu berbeda-beda untuk setiap OS. Karena saya juga di kelas ini menggunakan Virtual Lab dari mereka (ngirit storage saya om :p). Jadi langsung saja bahas tentang Redis Client dan DAO Pattern.

Redis Clients

Redis client adalah library untuk menghubungkan aplikasi yang akan dibuat dengan Redis server. Redis client saat ini sudah tersedia pada berbagai bahasa pemrograman populer. Tugas redis client antara lain:

  1. Mengelola koneksi antara client (app) dengan redis-server.
  2. Mengimplementasikan Redis Serialization Protocol (ReSP).
  3. Menyajikan API untuk menjalankan perintah redis ke redis-server pada bahasa pemrograman terkait.

Ada beberapa redis client untuk Java yang dijadikan pembahasan pada kelas ini. Diantaranya adalah:

  1. Jedis.
  2. Lettuce.
  3. Redisson.

Sedangkan yang akan digunakan pada kelas ini adalah Jedis, karena:

  1. Ukuran library yang kecil.
  2. API yang mirip-mirip dengan redis-cli.

Berikut adalah hal dasar yang perlu diketahui saat menggunakan Jedis:

// Initialize connection
String redisHost = "localhost";
int redisPort = 6379;
Jedis jedis = new Jedis(redisHost, redisPort);

// Set value
jedis.set("foo", "bar");

// Get value
String value = jedis.get("foo"); // "bar"

Berikut ini adalah type mapping antara Java dan Redis:

Redis Java
string String
list List
set Set
hash Map<String, String>
float Double
integer Long

Untuk API Jedis selengkapnya bisa dilihat di dokumentasi Jedis disini.

DAO Pattern

DAO adalah singkatan dari Data Access Object. DAO pattern memisahkan data access interface dari logic untuk berinteraksi dengan penyimpanan data. DAO pattern mendukung implementasi beragam penyimpanan data. Pada DAO domain objek dipisahkan dari logic utama.

Kalau kamu pernah coba Repository Pattern, DAO ini mirip-mirip dengan Repository Pattern.

Pada DAO pattern, kita memerlukan setidaknya beberapa hal dibawah ini:

  1. Domain Object: untuk merepresentasikan data.
  2. DAO interface: interface yang berisi data-store-agnostic API.
  3. DAO Implementation: class yang mengimplementasikan DAO interface untuk berinteraksi dengan data storage.

Berikut ini adalah contoh diagram dari penerapan DAO pattern.

DAO Pattern

Pada diagram diatas, interface SiteDao berperan untuk melakukan abstraksi. Untuk menggunakan Redis pada pattern ini, dibuatlah class SiteDaoRedisImpl yang mengimplementasikan SiteDao. SiteDaoRedisImpl ini terhubung ke penyimpanan redis menggunakan Redis Client. Sedangkan class Site pada diagram diatas digunakan sebagai objek masukan atau kembalian dari setiap class yang mengimplementasikan SiteDao interface, yang dalam contoh ini adalah SiteDaoRedisImpl.

Dengan pattern seperti ini, Application Code terima beres, tidak perlu tahu-menahu yang terjadi pada data storage. Jika suatu saat kita ingin menggantikan Redis, kita hanya perlu membuat class yang mengimplementasikan SiteDao, dan memasukkannya ke Application Code. Sedangkan pada Application Code kita tidak perlu merubah apapun.


Sebetulnya di kelas diajarkan coding Java untuk menerapkan DAO pattern ini, cuma codenya terlalu panjang, dan sebagian besar hanya code Java sederhana, yang bagian pentingnya sudah ditulis pada snippet Redis Clients diatas, jadi saya nggak ngerasa perlu untuk mencatat.

Jadi segitu aja catatan RU102J untuk minggu ini. Sampai jumpa di catatan minggu selanjutnya.

Suka artikel ini?

Saya biasanya share artikel-artikel terbaru via facebook atau fanpage foobarology saya. Kalau mau dapat updatenya, di add friend/like/follow aja link-link dibawah ini 😃

Facebook Foobarology