Redis Cache: Kurulum, Yapılandırma ve Kullanım Rehberi
z
zafer ak
Yazar
30 December 2025
3 dakika okuma
284 görüntülenme
Redis in-memory cache sistemi kurulumu, veri tipleri, persistence, replication, cluster yapılandırması ve uygulama entegrasyonu.
Redis, açık kaynak kodlu bir in-memory veri yapısı deposudur. Cache, session yönetimi, message broker ve gerçek zamanlı analytics için kullanılır.
Redis Neden Kullanılır?
- Yüksek performans: Milisaniye altı yanıt süreleri
- Esnek veri yapıları: String, List, Set, Hash, Sorted Set
- Persistence: Veri kalıcılığı seçenekleri
- Replication: Master-slave yapılandırma
- Pub/Sub: Mesajlaşma sistemi
- Lua scripting: Server-side script desteği
Kurulum
# Ubuntu/Debian
sudo apt update
sudo apt install redis-server
# CentOS/RHEL
sudo dnf install redis
# Başlat
sudo systemctl enable redis-server
sudo systemctl start redis-server
# Test
redis-cli ping
# PONG
Temel Yapılandırma
/etc/redis/redis.conf dosyasını düzenleyin:
# Bind address
bind 127.0.0.1 192.168.1.10
# Port
port 6379
# Şifre
requirepass guclu_redis_sifresi
# Max memory
maxmemory 2gb
maxmemory-policy allkeys-lru
# Persistence
appendonly yes
appendfsync everysec
# Logging
loglevel notice
logfile /var/log/redis/redis-server.log
Veri Tipleri ve Komutlar
String
SET user:1:name "Ahmet"
GET user:1:name
# Expire ile
SET session:abc123 "user_data" EX 3600
# Sayaç
INCR page:views
INCRBY page:views 10
Hash
HSET user:1 name "Ahmet" email "[email protected]" age 30
HGET user:1 name
HGETALL user:1
HINCRBY user:1 age 1
List
LPUSH queue:tasks "task1" "task2"
RPOP queue:tasks
LRANGE queue:tasks 0 -1
LLEN queue:tasks
Set
SADD tags:post1 "redis" "cache" "database"
SMEMBERS tags:post1
SISMEMBER tags:post1 "redis"
SINTER tags:post1 tags:post2
Sorted Set
ZADD leaderboard 100 "player1" 200 "player2" 150 "player3"
ZRANGE leaderboard 0 -1 WITHSCORES
ZREVRANGE leaderboard 0 2
ZINCRBY leaderboard 50 "player1"
Cache Stratejileri
Cache-Aside (Lazy Loading)
// Pseudocode
function getData(key) {
data = redis.get(key)
if (data == null) {
data = database.query(key)
redis.set(key, data, ttl=3600)
}
return data
}
Write-Through
// Pseudocode
function updateData(key, value) {
database.update(key, value)
redis.set(key, value)
}
Persistence
RDB (Snapshots)
# redis.conf
save 900 1 # 900 saniyede 1 değişiklik
save 300 10 # 300 saniyede 10 değişiklik
save 60 10000 # 60 saniyede 10000 değişiklik
dbfilename dump.rdb
dir /var/lib/redis
AOF (Append Only File)
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec # Her saniye fsync
Replication
# Slave sunucuda
replicaof 192.168.1.10 6379
masterauth guclu_redis_sifresi
# Durumu kontrol
INFO replication
Redis Sentinel (HA)
# /etc/redis/sentinel.conf
sentinel monitor mymaster 192.168.1.10 6379 2
sentinel auth-pass mymaster guclu_redis_sifresi
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
# Sentinel başlat
redis-sentinel /etc/redis/sentinel.conf
PHP ile Kullanım
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('guclu_redis_sifresi');
// String
$redis->set('key', 'value');
$value = $redis->get('key');
// Hash
$redis->hSet('user:1', 'name', 'Ahmet');
$redis->hSet('user:1', 'email', '[email protected]');
$user = $redis->hGetAll('user:1');
// Cache with TTL
$redis->setex('cache:data', 3600, json_encode($data));
?>
Sonuç
Redis, yüksek performanslı uygulamalar için vazgeçilmez bir araçtır. Doğru cache stratejisi ve yapılandırma ile uygulama performansını dramatik şekilde artırabilirsiniz.