Rate Limiter dengan INCR dan EXPIRE
Rate limiter membatasi berapa kali satu pengguna boleh memanggil endpoint dalam rentang waktu tertentu, dan Redis nyaris sempurna untuk ini karena operasinya atomik dan datanya memang boleh hilang. Polanya: naikkan penghitung dengan INCR, lalu pasang masa berlaku dengan EXPIRE pada kenaikan pertama sehingga jendela waktunya bergulir sendiri. Yang sering terlewat adalah lupa memasang EXPIRE — akibatnya penghitung tidak pernah berhenti dan pengguna terblokir selamanya. Pola yang sama dipakai untuk membatasi percobaan login demi menahan serangan tebak kata sandi.
👀 Contoh dulu
INCR limit:ip:10.0.0.1 EXPIRE limit:ip:10.0.0.1 60
Hasilnya: (integer) 1 (integer) 1
📝 Sekarang giliranmu
Batasi permintaan pengguna u7 menjadi per 60 detik. Tulis dua perintah Redis CLI: naikkan penghitung pada key limit:u7, lalu pasang masa berlaku 60 detik pada key yang sama.