Blog/backend/Redis ilə Caching — Azərbaycan Trafik Piklərini İdarə Etmək
backend

Redis ilə Caching — Azərbaycan Trafik Piklərini İdarə Etmək

B
Baku Stack AI
·24 mart 2026·4 dəq oxuma·20 baxış
backend.ascii
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ ■ ■ ■ BACKEND/CACHE ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ $ redis-cli ping ▓
▓ → PONG ▓
▓ ▓
▓ GET product:42 ▓
▓ ✓ CACHE HIT 0.2ms ▓
▓ ▓
▓ Hit Rate: ▓
▓ ▓▓▓▓▓▓▓▓▓░░ 92% ▓
▓ ▓
▓ ● DB:30% ● RAM:45% ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

Bayram günləri saytın çökür? Redis ilə caching strategiyaları, real kod nümunələri və Azərbaycan reallığına uyğun praktiki həllər — hamısı bu məqalədə.

Redis ilə Caching — Azərbaycan Trafik Piklərini İdarə Etmək

Novruz bayramında boss yazır: "Sayt açılmır, müştərilər şikayət edir." Tanış gəlir? Azərbaycanda e-commerce saytlar, ödəniş sistemləri və dövlət portalları il ərzində bir neçə dəfə ciddi trafik pikləri yaşayır. Novruz kampaniyaları, 1 sentyabr məktəb alış-verişi, Black Friday — bu anlarda serverin "yatması" birbaşa pul itkisi deməkdir.

Bu gün sizə göstərəcəyəm ki, Redis ilə düzgün caching strategiyası qurmaq nə qədər sadədir və niyə bu, hər Azərbaycanlı backend developer-in toolbox-unda olmalıdır.

Niyə Məhz Redis?

Əvvəlcə rəqəmlərlə danışaq. Tipik bir PostgreSQL sorğusu 10-50ms çəkir. Eyni data Redis-dən gəldikdə isə 0.1-0.5ms — yəni 100 dəfəyə qədər sürətli. Bakıda populyar bir e-commerce platformasının statistikasına baxsaq:

  • Normal gün: ~5,000 request/dəqiqə
  • Novruz kampaniya piki: ~85,000 request/dəqiqə (17x artım!)
  • Database yükü Redis-siz: CPU 95%, response time 3-8 saniyə
  • Database yükü Redis ilə: CPU 30%, response time 150ms

Redis in-memory data store-dur. Yəni bütün datanı RAM-da saxlayır. Bu səbəbdən disk I/O bottleneck problemi yoxdur. Strings, Hashes, Lists, Sets, Sorted Sets kimi data structure-ları dəstəkləyir və pub/sub, TTL (Time To Live) kimi feature-ları var.

Azərbaycan Konteksti: Harada İşlədirik?

Bakıda işləyən developer kimi bunu bilirsən — şirkətlərin çoxu monolith PHP (Laravel) və ya Node.js backend işlədir. Kapital Bank, ABB, Bravo kimi şirkətlərin digital komandaları, eləcə də startuplar (Wolt AZ, Buta Airways booking sistemi) — hamısı trafik pikləri ilə üzləşir.

Əgər aylıq 1500-3000 AZN maaş alıb backend developer işləyirsənsə, Redis bilmək səni müsahibədə fərqləndirəcək. Kontakt.az-da Redis tələb edən vakansiyaların sayı son 1 ildə 2 dəfə artıb.

Praktiki Nümunə: Node.js + Redis ilə Product Caching

Gəlin real ssenari quraq. Bir e-commerce saytda məhsul səhifəsi hər açılanda database-ə sorğu gedir. Novruzda 50,000 adam eyni anda "Hədiyyə dəstləri" kategoriyasına baxır. Database çökür. Redis ilə həll edək:

1. Quraşdırma

bash
# Redis quraşdırma (Ubuntu/WSL) sudo apt update sudo apt install redis-server sudo systemctl start redis # Node.js layihəsinə əlavə et npm install redis express

2. Əsas Cache Strategiyası (Cache-Aside Pattern)

javascript
const express = require('express'); const { createClient } = require('redis'); const app = express(); // Redis client yaradırıq const redisClient = createClient({ url: 'redis://localhost:6379' }); redisClient.connect(); // Fake database sorğusu (əslində PostgreSQL/MongoDB olacaq) async function getProductFromDB(productId) { // Bu sorğu 50-200ms çəkir console.log(`[DB HIT] Product ${productId} database-dən gəlir...`); return { id: productId, name: 'Novruz Hədiyyə Dəsti', price: 45.99, currency: 'AZN', stock: 120 }; } // Cache-Aside Pattern ilə endpoint app.get('/api/products/:id', async (req, res) => { const { id } = req.params; const cacheKey = `product:${id}`; try { // 1. Əvvəlcə Redis-dən yoxla const cachedData = await redisClient.get(cacheKey); if (cachedData) { console.log(`[CACHE HIT] Product ${id} Redis-dən gəldi`); return res.json({ source: 'cache', data: JSON.parse(cachedData) }); } // 2. Cache-də yoxdursa, database-dən götür const product = await getProductFromDB(id); // 3. Redis-ə yaz, 5 dəqiqə TTL ilə await redisClient.setEx(cacheKey, 300, JSON.stringify(product)); return res.json({ source: 'database', data: product }); } catch (error) { console.error('Xəta:', error); // Redis çöksə belə, app işləməlidir! const product = await getProductFromDB(id); return res.json({ source: 'database-fallback', data: product }); } }); // Cache invalidation endpoint (admin panel üçün) app.put('/api/products/:id', async (req, res) => { const { id } = req.params; // Database-i yenilə... // Sonra cache-i sil ki, köhnə data qalmasın await redisClient.del(`product:${id}`); res.json({ message: 'Product yeniləndi, cache təmizləndi' }); }); app.listen(3000, () => { console.log('Server port 3000-da işləyir'); });

TTL Strategiyası: Nə Qədər Cache Etməli?

Burda Azərbaycan reallığına uyğun tövsiyələr:

  • Məhsul səhifəsi: 5-10 dəqiqə (qiymət tez-tez dəyişə bilər)
  • Kategoriya siyahısı: 30 dəqiqə (nadir dəyişir)
  • Saytın header/footer məlumatları: 1 saat
  • Kurs məzənnəsi (USD/AZN): 1 dəqiqə (API limit-ə görə)
  • İstifadəçi session-ı: 24 saat

Cache Invalidation — Ən Çətin Hissə

Phil Karlton-un məşhur sözü var: "Computer science-da iki çətin şey var: cache invalidation və naming things." Praktiki yanaşmalar:

  1. TTL-based: Yuxarıdakı kimi, vaxt bitəndə cache silinir. Sadədir.
  2. Event-based: Məhsul yeniləndikdə redisClient.del(key) çağırırsan.
  3. Write-through: Hər write əməliyyatında həm DB, həm Redis yenilənir.

Azərbaycanda ən çox işləyən kombinasiya: TTL + Event-based. Admin paneldən məhsul yeniləndikdə cache silinir, amma normal halda TTL öz işini görür.

Redis Monitoring: Nəzarətdə Saxla

bash
# Redis-in real-time statistikasına bax redis-cli monitor # Memory istifadəsinə bax redis-cli info memory # Ən çox istifadə olunan key-lər redis-cli --hotkeys

Production-da hit rate izlə. Əgər cache hit rate 85%-dən aşağıdırsa, TTL strategiyasını yenidən nəzərdən keçir.

Deploy Haqqında Qısa Qeyd

Bakıda çox developer Hetzner, DigitalOcean və ya Azure-da deploy edir. Redis üçün seçimlər:

  • Self-hosted: Öz serverində redis-server — aylıq əlavə xərc 0 AZN, amma sən maintain edirsən
  • Redis Cloud: Managed həll — free tier 30MB, kiçik layihələr üçün kifayətdir
  • AWS ElastiCache: Enterprise layihələr üçün, amma Azərbaycandan latency yüksək ola bilər (ən yaxın region Frankfurt)

Nəticə və Növbəti Addımlar

Redis caching öyrənmək — Azərbaycanda backend developer kimi karyeranı bir pillə yuxarı qaldırmaq deməkdir. Bu məqalədəki Cache-Aside pattern ilə başla, sonra bu mövzulara keç:

  • Redis Pub/Sub — real-time notification-lar üçün
  • Redis Streams — message queue kimi istifadə
  • Redis Cluster — horizontal scaling üçün

Saytın Novruzda çökməsin. Kod yaz, cache et, rahat yat. 🚀


Sualların varsa, Baku Stack Telegram qrupuna yaz. Gələn həftə: "PostgreSQL Index Optimization — Sorğuları 10x Sürətləndir"

Teqlər

Paylaş:𝕏 Twitter✈ Telegram
Bəyəndim

Oxşar məqalələr

backend.ascii
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ ■ ■ ■ BACKEND ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ → GET /api/products ▓
▓ ● Redis: 0.3ms ✓ ▓
▓ ● PgSQL: 18ms ↓ ▓
▓ ▓
▓ Cache HIT ratio: ▓
▓ ▓▓▓▓▓▓▓▓▓░░ 92% ▓
▓ ▓
▓ Trafik piki: ▓
▓ ░░▒▒▓▓▓▓▓▓▓▓ Novruz ▓
▓ Response: 180ms ⚡ ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

Redis ilə Caching — Azərbaycan Trafik Piklərini İdarə Etmək

Bayram günləri saytın çökür? Redis ilə caching qurub, saniyədə 100K sorğunu rahat idarə etməyi öyrən — real kod və rəqəmlərlə.

backend.ascii
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ ■ ■ ■ SECURITY ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ ● Supabase RLS ▓
▓ ─────────────────── → ▓
▓ auth.uid() = user_id ▓
▓ ▓
▓ SELECT ░░ → ✓ own row ▓
▓ SELECT ░░ → ✗ others ▓
▓ ▓
▓ Policy: ▓▓▓▓▓▓▓░░ 80% ▓
▓ Safety: ▓▓▓▓▓▓▓▓▓ 99% ▓
▓ ✓ Bank-level security ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

Supabase RLS — Məlumatlarını Bank Səviyyəsində Qoru

Supabase Row Level Security ilə hər istifadəçi yalnız öz datasını görür. Bank tətbiqi nümunəsi ilə RLS-i addım-addım öyrən.

backend.ascii
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ ■ ■ ■ DATABASE ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ 🐘 PostgreSQL ▓
▓ ▓▓▓▓▓▓▓▓▓▓░░░░ 71% ▓
▓ → SQL ● ACID ● JOIN ▓
▓ → Bakı corp: ✓✓✓ ▓
▓──────────────────────▓
▓ 🍃 MongoDB ▓
▓ ▓▓▓▓▓▓▓▓░░░░░░ 55% ▓
▓ → NoSQL ● Fast ● MVP ▓
▓ → Startap: ✓✓✓ ▓
▓ Seçim → Layihəyə bax ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

PostgreSQL vs MongoDB — Bakı Startapın üçün Hansını Seçməlisən?

Azərbaycanlı developer olaraq startap qurmaq istəyirsən? PostgreSQL və MongoDB arasında düzgün seçim etmək üçün real kod, rəqəmlər və yerli kontekst burada.

← Bloqa qayıt