Ə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.
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.
1. Cache-ə bax → 2. Cache HIT? → Qaytar. Cache MISS? → DB-dən al → Cache-ə yaz → Qaytar.
Redis, Memcached, Spring Cache (@Cacheable), Caffeine (in-memory), Hazelcast.
@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);
}
}