Redis Nedir? Caching ve Session Yönetimi Rehberi

z

zafer ak

Yazar

05 December 2025 2 dakika okuma 2 görüntülenme
Redis Nedir? Caching ve Session Yönetimi Rehberi
Redis in-memory database kullanımı, Laravel entegrasyonu, caching stratejileri ve session yönetimi. Performans optimizasyonu.

Redis Nedir?

Redis (Remote Dictionary Server), açık kaynaklı, in-memory data structure store'dur. Cache, session, queue ve real-time analytics için kullanılır.

Neden Redis?

  • Hız: Memory-based, microsaniye response time
  • Veri Yapıları: String, List, Set, Hash, Sorted Set
  • Persistence: RDB ve AOF ile disk'e yazma
  • Replication: Master-slave yapısı
  • Pub/Sub: Real-time messaging

Redis Kurulumu

# Ubuntu
sudo apt install redis-server
sudo systemctl enable redis-server

# macOS
brew install redis
brew services start redis

# Docker
docker run -d -p 6379:6379 redis:alpine

Laravel Redis Konfigürasyonu

# .env
CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

Caching ile Redis

// Basit cache
Cache::put('key', 'value', 3600); // 1 saat
$value = Cache::get('key');

// Remember pattern
$users = Cache::remember('users', 3600, function () {
    return User::all();
});

// Tags ile gruplama
Cache::tags(['users', 'avatars'])->put('user:1', $user, 3600);
Cache::tags(['users'])->flush();

// Cache invalidation
Cache::forget('key');
Cache::flush();

Session Yönetimi

// config/session.php
'driver' => env('SESSION_DRIVER', 'redis'),
'connection' => 'session',

// Kullanım
session(['user_preference' => 'dark_mode']);
$preference = session('user_preference');

Redis Veri Yapıları

Strings

Redis::set('name', 'John');
Redis::get('name');
Redis::incr('visits');
Redis::expire('name', 3600);

Hashes

Redis::hset('user:1', 'name', 'John');
Redis::hset('user:1', 'email', '[email protected]');
Redis::hgetall('user:1');

Lists

Redis::lpush('queue', 'task1');
Redis::rpop('queue');

Sorted Sets

Redis::zadd('leaderboard', 100, 'player1');
Redis::zrange('leaderboard', 0, 10, 'WITHSCORES');

Cache Stratejileri

Cache-Aside (Lazy Loading)

$user = Cache::get("user:{$id}");
if (!$user) {
    $user = User::find($id);
    Cache::put("user:{$id}", $user, 3600);
}
return $user;

Write-Through

public function update(User $user, array $data)
{
    $user->update($data);
    Cache::put("user:{$user->id}", $user, 3600);
    return $user;
}

Redis Best Practices

  • Key naming convention: resource:id:field
  • TTL kullanın, memory overflow önleyin
  • Maxmemory-policy ayarlayın
  • Monitoring: redis-cli INFO

Sonuç

Redis, modern web uygulamalarının performans omurgasıdır. Doğru kullanıldığında response time'ı dramatik şekilde iyileştirir.

İlgili Yazılar