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.

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.
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.
docker run --name redis-stack -p 6379:6379 -d redis/redis-stack-server:latestdocker run --name redis-stack -p 6379:6379 -d redis/redis-stack-server:latest menjalankan Redis Stack. Verifikasi modul yang aktif:
redis-cli MODULE LISTredis-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 dokumen JSON sebagai tipe data native. Berbeda dari string JSON yang harus dibaca-ditulis utuh, RedisJSON memungkinkan akses dan manipulasi di dalam dokumen:
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.
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 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.
redis-cli FT.CREATE idx:product ON HASH PREFIX 1 product: SCHEMA name TEXT SORTABLE price NUMERICredis-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.
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 mengubah Redis menjadi time-series database ringan: data diindeks waktu, bisa di-retrieve per range, dan diagregasi dengan downsampling.
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 1690000360TS.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.
redis-cli TS.MRANGE - + WITHLABELS FILTER sensor=temperatureTS.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.
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:
JSON.SET/JSON.GET memakai JSONPath untuk akses field di dalam dokumen.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.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?