← Bütün Patternlər
🚀

Cache-Aside

Əvvəlcə Redis-dən bax. Yoxdursa DB-dən al, Redis-ə yaz, növbəti dəfə Redis-dən ver — sürət x100.

🎯
Nə üçün lazımdır?

DB-yə hər dəfə getmək yavaşdır. Tez-tez oxunan data-nı Redis-ə saxlayıb tez vermək: ~1ms əvəzinə ~50µs.

🔄
Axın (Flow)

1. Cache-ə bax → 2. Cache HIT? → Qaytar. Cache MISS? → DB-dən al → Cache-ə yaz → Qaytar.

🛠️
Alətlər

Redis, Memcached, Spring Cache (@Cacheable), Caffeine (in-memory), Hazelcast.

İNTERAKTİV

Vizual İzah

Mərhələ {{ currentStep + 1 }}: {{ steps[currentStep].title }}

⚙️
App
→ Cache bax
✅ Cache HIT!
❌ Cache MISS
📦
Redis Cache
→ DB-dən al
→ Cache-ə yaz
🗄️
PostgreSQL
JAVA

Kod Nümunəsi

ProductService.java
@Service
public class ProductService {

    @Cacheable(value = "products", key = "#id")
    public Product getProduct(Long id) {
        // Bu metod yalnız cache-də yoxdursa çağırılır (Cache MISS)
        // Nəticə avtomatik Redis-ə yazılır
        return productRepository.findById(id)
            .orElseThrow(() -> new NotFoundException());
    }

    @CacheEvict(value = "products", key = "#product.id")
    public void updateProduct(Product product) {
        // Data dəyişdikdə cache silinir (stale data-nın qarşısını alır)
        productRepository.save(product);
    }
}
✅ Üstünlükləri
  • Oxuma performansı x10-x100 artır
  • DB yükünü azaldır (cost saving)
  • Spring @Cacheable ilə çox sadə implementasiya
⚠️ Riskləri
  • Stale Data — cache silinmədən dəyişsə köhnə data qalır
  • Cache Stampede — çox nəfər eyni anda miss edərsə
  • TTL seçimi vacibdir (çox qısa = faydasız, çox uzun = stale)