Redis Nedir? Caching ve Session Yönetimi Rehberi
z
zafer ak
Yazar
05 December 2025
2 dakika okuma
2 görüntülenme
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.