Redis Cache Başlangıç Rehberi: Sıfırdan Öğrenin (2025)

14.12.2025 23:03 Haber

Web uygulamanız yavaş mı çalışıyor? Veritabanı sorguları çok mu uzun sürüyor? Çözüm: Redis Cache! Alesta Web olarak Redis cache kullanımını (Redis cache tutorial) sıfırdan anlatıyoruz. Bu rehber ile uygulamanızı 10 kata kadar hızlandırabilirsiniz.

Redis Nedir? (What is Redis?)

Redis (Remote Dictionary Server), bellekte veri tutan (in-memory) açık kaynaklı bir veri yapısı deposudur. Basitçe söylemek gerekirse, süper hızlı bir veritabanı düşünün - veriler RAM'de tutulduğu için disk tabanlı veritabanlarından 100 kat daha hızlı! Alesta Web olarak tüm projelerimizde Redis kullanıyoruz.

? Bilgi / Info:

Redis sadece cache değil! Veritabanı (database), mesaj kuyruğu (message broker), session yönetimi ve gerçek zamanlı analitik için de kullanılabilir.

Redis Kullanan Şirketler / Companies Using Redis

  • Twitter - Timeline caching
  • GitHub - Session management
  • Pinterest - Feed caching
  • Stack Overflow - Page caching
  • Instagram - Media feed

Neden Redis Kullanmalı? (Why Use Redis?)

Alesta Web deneyimlerine göre Redis'in avantajları:

✅ Redis Avantajları / Redis Advantages

Avantaj (Advantage) Açıklama (Description)
Hız (Speed) Mikrosaniye cevap süreleri (microsecond latency)
Çeşitli Veri Yapıları String, Hash, List, Set, Sorted Set
Persistence Verileri diske kaydedebilir (optional)
Atomik İşlemler Thread-safe, race condition yok
Pub/Sub Gerçek zamanlı mesajlaşma (real-time messaging)
✅ Performans Örneği / Performance Example:

Tipik bir MySQL sorgusu: 50-100ms
Aynı veri Redis'ten: 0.1-1ms
Sonuç: 100x daha hızlı!

Redis Kurulumu (How to Install Redis)

Alesta Web olarak farklı platformlar için kurulum rehberi hazırladık:

Ubuntu/Debian Kurulumu

# Sistem güncellemesi
sudo apt update

# Redis kurulumu
sudo apt install redis-server

# Redis'i başlat
sudo systemctl start redis-server
sudo systemctl enable redis-server

# Kurulumu doğrula
redis-cli ping
# Çıktı: PONG

Windows Kurulumu (WSL veya Docker)

# Docker ile kurulum (önerilen)
docker run -d --name redis -p 6379:6379 redis

# Bağlantı testi
docker exec -it redis redis-cli ping
# Çıktı: PONG

macOS Kurulumu

# Homebrew ile kurulum
brew install redis

# Redis'i başlat
brew services start redis

# Bağlantı testi
redis-cli ping
# Çıktı: PONG

Temel Redis Komutları (Basic Redis Commands)

Redis CLI ile kullanabileceğiniz temel komutlar:

String İşlemleri / String Operations

# Değer kaydet (SET key value)
SET kullanici:1:isim "Ahmet"
# OK

# Değer oku (GET key)
GET kullanici:1:isim
# "Ahmet"

# TTL ile kaydet (saniye cinsinden expire)
SET oturum:abc123 "user_data" EX 3600
# 1 saat sonra otomatik silinir

# TTL kontrol
TTL oturum:abc123
# 3598 (kalan saniye)

Hash İşlemleri / Hash Operations

# Hash kaydet (nesne gibi)
HSET kullanici:1 isim "Ahmet" yas 28 sehir "Istanbul"

# Tek alan oku
HGET kullanici:1 isim
# "Ahmet"

# Tüm alanları oku
HGETALL kullanici:1
# 1) "isim"
# 2) "Ahmet"
# 3) "yas"
# 4) "28"
# 5) "sehir"
# 6) "Istanbul"

List İşlemleri / List Operations

# Listeye ekle
LPUSH son_haberler "Haber 1"
LPUSH son_haberler "Haber 2"
LPUSH son_haberler "Haber 3"

# Son 10 haberi al
LRANGE son_haberler 0 9
# 1) "Haber 3"
# 2) "Haber 2"
# 3) "Haber 1"

Silme İşlemleri / Delete Operations

# Tek key sil
DEL kullanici:1

# Pattern ile sil (dikkatli kullan!)
# redis-cli KEYS "oturum:*" | xargs redis-cli DEL

# Tüm veritabanını temizle (DİKKAT!)
FLUSHDB

Caching Patterns (Cache Desenleri)

Alesta Web olarak en çok kullandığımız cache pattern'leri:

Pattern 1: Cache-Aside (Lazy Loading)

# En yaygın pattern - uygulama cache'i yönetir
def get_user(user_id):
    # 1. Önce cache'e bak
    cached = redis.get(f"user:{user_id}")
    if cached:
        return json.loads(cached)

    # 2. Cache'de yoksa veritabanından al
    user = database.get_user(user_id)

    # 3. Cache'e kaydet (1 saat TTL)
    redis.setex(f"user:{user_id}", 3600, json.dumps(user))

    return user

Pattern 2: Write-Through

# Yazma işleminde cache ve DB birlikte güncellenir
def update_user(user_id, data):
    # 1. Veritabanını güncelle
    database.update_user(user_id, data)

    # 2. Cache'i güncelle
    redis.setex(f"user:{user_id}", 3600, json.dumps(data))
? Alesta Web İpucu:

Cache-Aside pattern'i çoğu senaryo için idealdir. Write-Through ise tutarlılığın kritik olduğu durumlarda tercih edilir (consistency is critical).

Python ile Redis Kullanımı (Python Redis Tutorial)

Python'da Redis kullanmak çok kolay. İşte Alesta Web'in hazırladığı örnekler:

Kurulum / Installation

# redis-py kütüphanesini kur
pip install redis

Temel Kullanım / Basic Usage

import redis
import json

# Redis bağlantısı
r = redis.Redis(host='localhost', port=6379, db=0)

# String kaydet ve oku
r.set('mesaj', 'Merhaba Redis!')
print(r.get('mesaj'))  # b'Merhaba Redis!'

# TTL ile kaydet (60 saniye)
r.setex('gecici_veri', 60, 'Bu veri 60 saniye sonra silinecek')

# JSON veri kaydet
kullanici = {'isim': 'Ahmet', 'yas': 28}
r.set('kullanici:1', json.dumps(kullanici))

# JSON veri oku
veri = json.loads(r.get('kullanici:1'))
print(veri['isim'])  # Ahmet

Gerçek Dünya Örneği: API Response Cache

import redis
import json
import requests

r = redis.Redis(host='localhost', port=6379, db=0)

def get_weather(city):
    """Hava durumu API'sini cache'le"""
    cache_key = f"weather:{city}"

    # Cache'de var mı kontrol et
    cached = r.get(cache_key)
    if cached:
        print("Cache'den geldi!")
        return json.loads(cached)

    # API'den al
    print("API'den çekiliyor...")
    response = requests.get(f"https://api.example.com/weather/{city}")
    data = response.json()

    # 10 dakika cache'le (600 saniye)
    r.setex(cache_key, 600, json.dumps(data))

    return data

# İlk çağrı - API'den gelir
weather = get_weather("Istanbul")

# İkinci çağrı - Cache'den gelir (çok hızlı!)
weather = get_weather("Istanbul")

Best Practices (En İyi Pratikler)

Alesta Web deneyimlerimizden öğrendiklerimiz:

✅ Yapılması Gerekenler / Do's

  • Anlamlı key isimleri: user:123:profile formatı kullanın
  • Her zaman TTL belirleyin: Sonsuz cache tehlikelidir
  • Doğru veri tipini seçin: Nesne için Hash, liste için List
  • Bağlantı havuzu kullanın: Her istek için yeni bağlantı açmayın
  • Monitoring yapın: redis-cli INFO ile durumu izleyin

❌ Yapılmaması Gerekenler / Don'ts

  • Büyük değerler: 100KB üzeri değerlerden kaçının
  • KEYS komutu: Production'da asla KEYS * kullanmayın (blocking)
  • Sonsuz cache: TTL'siz veri hafıza sızıntısına yol açar
  • Tek Redis instance: Production'da cluster veya replica kullanın
⚠️ Dikkat / Warning:

Redis varsayılan olarak şifresizdir. Production'da mutlaka requirepass ayarlayın ve güvenlik duvarı kuralları ekleyin (always set password in production).

? Kaynaklar ve Referanslar / Sources and References

Bu makalede kullanılan bilgiler aşağıdaki güvenilir kaynaklardan derlenmiştir:

Alesta Web olarak tüm komutları test ettik ve doğruladık.

✅ Redis Öğrendiniz! (You Learned Redis!)

Artık Redis ile uygulamalarınızı hızlandırabilirsiniz. Alesta Web olarak sorularınız için buradayız.

Hızlı Özet / Quick Summary:

  • ✅ Redis = In-memory veri deposu (blazing fast)
  • ✅ Cache ile 100x hız artışı mümkün
  • ✅ String, Hash, List, Set veri tipleri
  • ✅ Cache-Aside pattern en yaygın kullanım
  • ✅ Her zaman TTL belirle (set expiration)
  • ✅ Production'da şifre ve güvenlik şart

Faydalı Linkler / Useful Links:

© 2025 AlestaWeb - Tüm hakları saklıdır.

WM Tools
💫

WebMaster Tools

15 Profesyonel Araç