Redis adalah server struktur data dalam memori yang menjadi bagian penting pada backend modern: cache, antrean, leaderboard, session store, dan bus pub/sub dicapai melalui struktur data yang kaya dan set perintah yang presisi. Jalur ini membahas struktur data tersebut dengan benar, siklus hidup key, kompromi persistensi, serta pola produksi seperti cache-aside, lock terdistribusi, dan consumer group stream. Latihan di sepanjang jalur menggunakan redis-cli dan redis-py pada Redis 8.0.2, sehingga setiap perintah dapat langsung dicoba pada terminal.
Redis
Jalur praktis Redis 8 dari struktur data inti hingga pola produksi: cache, antrean, leaderboard, session, stream, dan operasional.
0/0 selesai
Modul pembuka: tempat Redis dalam arsitektur backend, penyiapan server dan redis-cli, serta sepuluh perintah pertama.
- Apa itu Redis ?Mengenal Redis sebagai server struktur data dalam memori dan tempatnya dalam arsitektur aplikasi modern.
- PenyiapanMenjalankan redis-server 8.0, menghubungkan redis-cli, dan memverifikasi koneksi dengan PING.
- Perintah dasarSepuluh menit pertama di redis-cli: SET, GET, DEL, INCR, dan TTL untuk pola penggunaan paling dasar.
Tujuh struktur data Redis: string, list, set, sorted set, hash, stream, dan vector sets beserta latihan perintahnya.
- StringOperasi string: counter dengan INCR, flag, batch MSET/MGET, dan penambahan teks dengan APPEND.
- ListList dua arah: LPUSH/RPOP, list berbatas dengan LTRIM, dan antrean sederhana.
- SetKeanggotaan, union, irisan, dan selisih set untuk kebutuhan tagging dan rekomendasi sederhana.
- Sorted setSorted set: skor, rentang ZRANGE, ranking, dan struktur leaderboard.
- HashHash sebagai penyimpanan seperti objek: operasi field, HINCRBY, dan kapan hash lebih tepat daripada string.
- Pengantar streamStream sebagai log append-only dengan ID otomatis dan XREAD, pengganti modern bagi list untuk log peristiwa.
- Vector SetsVector Sets pada Redis 8: struktur semantic search dengan VADD, VSIM, dan atribut elemen.
Siklus hidup key: kedaluwarsa, konvensi penamaan, pemindaian aman, dan pengendalian memori dengan eviksi.
- KedaluwarsaPola TTL: EXPIRE, SET dengan EX, persist, dan perilaku waktu kedaluwarsa saat key ditulis ulang.
- Desain keyKonvensi penamaan key: namespace, pemisah titik dua, hierarki, dan panjang yang seimbang.
- PemindaianSCAN sebagai pengganti KEYS: iterasi kursor, MATCH, COUNT, dan disiplin pemindaian pada produksi.
- Memori dan eviksimaxmemory, kebijakan eviksi, MEMORY USAGE, dan kesadaran biaya memori per key.
Kompromi durability: snapshot RDB, berkas append-only AOF, dan pemilihan strategi per beban kerja.
- RDBSnapshot RDB: pemicu SAVE/BGSAVE, perilaku fork, berkas dump.rdb, dan proses pemulihan.
- AOFAOF: pencatatan perintah, kebijakan fsync, rewrite untuk memadatkan berkas, dan pemulihannya.
- Keputusan durabilityMemilih RDB, AOF, atau keduanya per beban kerja, termasuk pendekatan hibrida pada Redis 8.
Lima pola produksi: cache-aside, pembatasan laju, lock terdistribusi, pub/sub, dan penyimpanan session dengan redis-py.
- CachingCache-aside dengan redis-py: pembacaan, pengisian, TTL, dan mitigasi cache stampede.
- Pembatasan lajuFixed window dan sliding window dengan INCR dan sorted set, lengkap dengan analisis kelemahannya.
- Lock terdistribusiLock dengan SET NX EX: akuisisi, pelepasan aman lewat token, dan batas semantik Redlock.
- Pub/subChannel pub/sub: PUBLISH, SUBSCRIBE dengan redis-py, dan jaminan pengiriman yang dibahas dengan jujur.
- Penyimpanan sessionSession web di Redis: key per sesi, waktu kedaluwarsa selaras, dan pembacaan di middleware.
Stream secara mendalam: XADD/XREAD, consumer group dengan XREADGROUP dan XACK, serta perbandingan dengan alternatif.
- Stream mendalamXADD, ID stream, XREAD berbasis ID, dan trimming dengan XTRIM/MAXLEN.
- Consumer groupXGROUP, XREADGROUP, ack, daftar pending, dan penanganan pesan gagal.
- Stream vs alternatifStream versus pub/sub versus list, dan posisinya secara jujur dibandingkan Kafka untuk kebutuhan nyata.
Menjalankan Redis untuk produksi: replikasi, Sentinel dan Cluster, monitoring, keamanan ACL, serta transaksi dan pipelining.
- ReplikasiRead replica dengan REPLICAOF: aliran data, pengujian keterlambatan, dan dasar failover.
- Sentinel dan ClusterSentinel untuk HA otomatis dan Cluster untuk sharding: kapan masing-masing diperlukan.
- MonitoringINFO, slowlog, MEMORY USAGE, dan latensi: cara menemukan big key dan penyebab latency.
- KeamananACL pada Redis 8: pengguna, izin per kategori perintah, password, dan disiplin paparan jaringan.
- Transaksi dan pipeliningMULTI/EXEC, WATCH, dan pipelining: apa yang dijanjikan, apa yang tidak, dan kapan pipelining mengubah performa.
Proyek terpandu: memilih beban kerja nyata, merancang struktur data dan TTL, lalu mengimplementasikannya dengan penanganan kegagalan.
- Pemilihan proyekMemilih beban kerja proyek dengan kebutuhan latensi terukur: leaderboard real-time untuk portal kuis kelas.
- Desain dataMerancang struktur, key, dan TTL proyek leaderboard, lalu mendokumentasikannya sebagai kontrak data.
- ImplementasiMengimplementasikan proyek leaderboard: skrip Python, pola terintegrasi, dan penanganan kegagalan.