Redis nədir və ondan nə vaxt istifadə etmək lazımdır
Redis-i o qədər tez-tez «sadəcə keş» kimi təsvir edirlər ki, insanlar onu lazımınca qiymətləndirmir. Bu isə təəssüf doğurur, çünki bu, həqiqətən çoxfunksiyalı alətdir və onun daxildə əslində nə etdiyini anlamaq canlı mühitdəki bu qədər sistemdə niyə rast gəlindiyini aydın edir.
Redis əslində nədir
Redis yaddaşdaxili (in-memory) verilənlər anbarıdır — verilənləri diskdə deyil, operativ yaddaşda (RAM) saxlayır və məhz buna görə dəstəklədiyi əməliyyatlarda ənənəvi verilənlər bazasından qat-qat sürətlidir. Yaddaşdan oxumaq mikrosaniyələr çəkir; diskdən, hətta sürətli SSD-dən oxumaq isə nəzərəçarpacaq dərəcədə uzun çəkir. Redis-in mövcudluğunun bütün səbəbi məhz bu sürət fərqidir.
Adi açar-dəyər keşindən fərqli olaraq, Redis birbaşa həqiqətən faydalı verilən strukturlarını dəstəkləyir — sətirlər, siyahılar, çoxluqlar, çeşidlənmiş çoxluqlar, heşlər — yəni sadə məlumat bloklarını saxlayıb oxumaqla məhdudlaşmırsınız. Siyahıya element əlavə edib çıxara, sayğacı atomar şəkildə artıra və ya çeşidlənmiş çoxluğu bal üzrə sorğulaya bilərsiniz — hamısı nativ, sürətli əməliyyatlar kimi.
Redis əslində harada istifadə olunur
- Keşləmə: ən geniş yayılmış istifadə — baha başa gələn verilənlər bazası sorğusunun və ya API çağırışının nəticəsini Redis-də saxlayın və sonrakı sorğularda onu hər dəfə yenidən hesablamaq əvəzinə yaddaşdan təqdim edin.
- Sessiyaların saxlanması: istifadəçi sessiyası məlumatları daim oxunub yazılmalıdır və uzunmüddətli saxlanma zəmanəti tələb etmir, bu da onları belə sürətli alət üçün təbii namizəd edir.
- Sorğu sayının məhdudlaşdırılması (rate limiting): Redis-in atomar sayğac əməliyyatları «bu IP son bir dəqiqədə həddən artıq sorğu göndəribmi?» yoxlamasını sürətli və etibarlı edir.
- Real vaxt reytinq cədvəlləri: onun çeşidlənmiş çoxluqları demək olar ki, məhz daim yenilənən «bala görə ilk 10» sorğuları üçün yaradılıb.
- Pub/sub mesajlaşma: Redis sistemin müxtəlif hissələri arasında real vaxtda mesaj yaya bilir, bu da canlı bildirişlər kimi şeylər üçün əlverişlidir.
- Tapşırıq növbələri: bir çox fon tapşırıqları sistemi emal olunmağı gözləyən tapşırıqlar üçün anbar kimi Redis-dən istifadə edir.
Anlamalı olduğunuz kompromis
Redis-in sürəti yaddaşda yaşamasından irəli gəlir, yaddaş isə standart olaraq diskdən həm bahalı, həm də daha az etibarlıdır. Redis serveriniz yenidən başlasa, açıq şəkildə davamlı saxlanmanı (persistence) konfiqurasiya etməmisinizsə, verilənlər itə bilər (Redis bunu dəstəkləyir, amma öz kompromisləri ilə). Praktik nəticə: Redis ya birdəfəlik, ya da bərpa oluna bilən verilənlər üçün əladır — keşi həmişə mənbə verilənlər bazasından yenidən qurmaq olar — itirilməsinə həqiqətən yol verə bilməyəcəyiniz hər hansı bir şey üçün istifadə edirsinizsə, diqqətli konfiqurasiya tələb edir.
Ona əslində nə vaxt müraciət etmək lazımdır
Baha başa gələn və hər sorğuda yenidən hesablanmasına ehtiyac olmayan sorğu və ya hesablamanız varsa, onu Redis-də keşləyin. Sorğu limitləri, real vaxt sayğacları və ya reytinq cədvəlləri ilə bağlı nəsə qurursunuzsa, Redis bu işin öhdəsindən ümumi təyinatlı relyasiyalı verilənlər bazasının heç vaxt bacarmayacağı qədər yaxşı gəlir. Verilənləriniz serverin yenidən başlamasından mütləq salamat çıxmalıdırsa və başqa heç bir yerdən bərpa oluna bilmirsə, bu, Postgres kimi əsas məqsədi davamlı saxlanma olan verilənlər bazası üçün daha uyğundur.
Sistemin hansı hissələrinin Redis kimi sürətli, müvəqqəti anbara, hansılarının isə davamlı verilənlər bazasına aid olduğunu dəqiq bilmək demək olar ki, hər bulud infrastrukturu layihəsində qəbul etdiyimiz qərardır — bunu düzgün etmək çox vaxt real yük altında sürətli qalan məhsulla böyüdükcə səssizcə yavaşlayan məhsul arasındakı fərqdir.