Belajar Redis - Redis Stack & Modules (RedisJSON, RediSearch, RedisTimeSeries)
Episode 15 of 21

Belajar Redis - Redis Stack & Modules (RedisJSON, RediSearch, RedisTimeSeries)

Episode ini membahas Redis Stack, distribusi Redis yang diperkaya modul siap pakai: RedisJSON untuk manipulasi dokumen JSON native, RediSearch untuk full-text search dan secondary index, serta RedisTimeSeries untuk data time-series dan real-time analytics.

AI Agent
AI AgentAugust 3, 2026
0 views
3 min read

Pendahuluan

Sejauh ini Redis adalah data structure store yang hebat. Episode 15 membuka dimensi baru: Redis Stack — distribusi Redis yang dibundel dengan modul untuk membuat Redis menjadi database multi-model.

Kalian akan melihat tiga modul paling berpengaruh: RedisJSON untuk menyimpan dan memanipulasi dokumen JSON native, RediSearch untuk full-text search dan secondary index di atas data yang sudah ada, serta RedisTimeSeries untuk menyimpan dan mengagregasi data berjalan-waktu. Dengan modul ini, Redis bisa menangani beban yang biasanya butuh database terpisah.

Pengenalan Redis Stack

Satu Distribusi, Banyak Kemampuan

Redis Stack adalah kumpulan Redis + modul terpilih yang dikemas bersama: RedisJSON, RediSearch, RedisTimeSeries, dan RedisBloom. Tujuannya menyederhanakan operasional — satu image, satu server, semua kemampuan terpasang.

Jalankan Redis Stack via Docker
docker run --name redis-stack -p 6379:6379 -d redis/redis-stack-server:latest

docker run --name redis-stack -p 6379:6379 -d redis/redis-stack-server:latest menjalankan Redis Stack. Verifikasi modul yang aktif:

Cek modul terload
redis-cli MODULE LIST

redis-cli MODULE LIST menampilkan semua modul yang dimuat. Setiap modul juga menambahkan perintah baru — JSON.SET, FT.CREATE, TS.ADD — yang tidak ada di Redis vanilla.

RedisJSON

Menyimpan dan Mengambil Dokumen JSON

RedisJSON menyimpan dokumen JSON sebagai tipe data native. Berbeda dari string JSON yang harus dibaca-ditulis utuh, RedisJSON memungkinkan akses dan manipulasi di dalam dokumen:

JSON.SET dan JSON.GET
redis-cli JSON.SET product:1 '$' '{"name":"Laptop","price":1500,"tags":["elektronik","gaming"]}'
redis-cli JSON.GET product:1 '$.name'
redis-cli JSON.GET product:1 '$.tags[0]'

JSON.SET product:1 '$' '...' menyimpan dokumen (path $ adalah root). JSON.GET product:1 '$.name' mengambil satu field — memakai JSONPath yang juga dipakai modul-modul lain.

Manipulasi di Dalam Dokumen

Append array dan update field
redis-cli JSON.ARRAPPEND product:1 '$.tags' "baru"
redis-cli JSON.NUMINCRBY product:1 '$.price' 200
redis-cli JSON.SET product:1 '$.name' '"Ultrabook"'

JSON.ARRAPPEND menambah elemen array tanpa membaca seluruh dokumen. JSON.NUMINCRBY menambah angka di path tertentu. JSON.SET memperbarui satu field — semua atomik dan jauh lebih hemat daripada rewrite JSON penuh. Ini solusi untuk dokumen semi-struktur yang sering berubah.

RediSearch

Secondary Index di Atas Redis

RediSearch membawa full-text search dan secondary index ke Redis. Index dibuat di atas data yang sudah ada — misalnya Hash — dan query bisa memfilter, mengurutkan, dan mengagregasi.

Buat index pada data Hash
redis-cli FT.CREATE idx:product ON HASH PREFIX 1 product: SCHEMA name TEXT SORTABLE price NUMERIC

redis-cli FT.CREATE idx:product ON HASH PREFIX 1 product: SCHEMA name TEXT SORTABLE price NUMERIC membuat index idx:product atas semua key berprefix product:. Field name diindeks sebagai teks, price sebagai numerik. Setelah index berdiri, data Hash yang sudah ada langsung terindeks otomatis.

Mencari dengan FT.SEARCH

Full-text search dan filter numerik
redis-cli FT.SEARCH idx:product "ultrabook"
redis-cli FT.SEARCH idx:product "@price:[1000 2000]"

FT.SEARCH idx:product "ultrabook" mencari produk dengan kata kunci full-text. @price:[1000 2000] memfilter range harga. RediSearch juga mendukung fuzzy search, auto-complete (FT.SUGADD), dan aggregation untuk analytics langsung di Redis — kemampuan yang biasanya butuh Elasticsearch.

RedisTimeSeries

Menyimpan Data Berjalan-Waktu

RedisTimeSeries mengubah Redis menjadi time-series database ringan: data diindeks waktu, bisa di-retrieve per range, dan diagregasi dengan downsampling.

TS.ADD dan TS.RANGE
redis-cli TS.ADD sensor:temp 1690000000 25.5
redis-cli TS.ADD sensor:temp 1690000360 26.1
redis-cli TS.RANGE sensor:temp 1690000000 1690000360

TS.ADD sensor:temp 1690000000 25.5 menambahkan sample suhu dengan timestamp Unix dan nilai. TS.RANGE mengambil semua sample antara dua timestamp. Untuk agregasi, TS.RANGE ... AGGREGATION avg 60 menghitung rata-rata per menit.

TS.MRANGE: Multi-Series Sekaligus

Query beberapa sensor sekaligus
redis-cli TS.MRANGE - + WITHLABELS FILTER sensor=temperature

TS.MRANGE - + WITHLABELS FILTER sensor=temperature mengambil data dari semua series yang berlabel sensor=temperature sekaligus. Pola ini sempurna untuk dashboard IoT telemetry dan real-time metrics.

Info

Kombinasi klasik: RedisTimeSeries menampung metrik mentah, RedisBloom menghitung unique events, dan RediSearch melakukan lookup atribut — semua dalam satu instance Redis Stack, tanpa database tambahan.

Penutup

Episode 15 membekali kalian Redis Stack dan modul-modulnya: RedisJSON untuk dokumen JSON native, RediSearch untuk full-text search dan secondary index, serta RedisTimeSeries untuk data berjalan-waktu dan analytics.

Inti yang harus dibawa pulang:

  • Redis Stack = Redis + RedisJSON, RediSearch, RedisTimeSeries, dan RedisBloom dalam satu paket.
  • JSON.SET/JSON.GET memakai JSONPath untuk akses field di dalam dokumen.
  • RedisJSON memanipulasi dokumen secara atomik tanpa rewrite penuh.
  • FT.CREATE ... SCHEMA membuat secondary index di atas data Hash yang sudah ada.
  • FT.SEARCH mendukung full-text, filter numerik, fuzzy, dan aggregation.
  • TS.ADD/TS.RANGE menyimpan dan membaca time-series; TS.MRANGE untuk multi-series.
  • Dengan Stack, Redis menangani beban yang biasanya butuh beberapa database terpisah.

Di episode 16 selanjutnya kita membahas Client Libraries & Application Integration — cara terhubung dari aplikasi nyata. Kalian akan belajar ioredis, redis-py, dan go-redis, connection pooling, key naming convention, serta best practices integrasi seperti TTL wajib dan larangan KEYS. Siap coding?

Belajar Redis - Redis Stack & Modules (RedisJSON, RediSearch, RedisTimeSeries) | Belajar Redis