
Redis Kurulumu ve Önbellekleme: Uygulama Performansını Artırın
Redis kurulumu ve önbellekleme stratejileri. Veri yapıları, PHP/Node.js entegrasyonu, Redis Sentinel ile yüksek erişilebilirlik ve bellek yönetimi.
Redis Kurulumu ve Önbellekleme
Redis (Remote Dictionary Server), bellek içi (in-memory) veri yapısı deposudur. Önbellekleme, oturum yönetimi, gerçek zamanlı analitik ve mesajlaşma için kullanılır.
Redis Neden Kullanılır?
- Önbellekleme: Veritabanı sorgularını önbelleğe alarak yük azaltma
- Session yönetimi: Dağıtık oturum depolama
- Rate limiting: API istek sınırlama
- Pub/Sub: Gerçek zamanlı mesajlaşma
- Leaderboard: Sıralama tabloları (Sorted Sets)
- Queue: İş kuyruğu yönetimi
Kurulum
Ubuntu/Debian:
apt update
apt install redis-server
systemctl enable --now redis-server
redis-cli ping # PONG döner
RHEL/Rocky Linux:
dnf install redis
systemctl enable --now redis
redis-cli ping
Docker ile:
docker run -d --name redis -p 6379:6379 redis:alpine
docker exec -it redis redis-cli
Temel Yapılandırma
# /etc/redis/redis.conf veya /etc/redis.conf
# Bind adresi (sadece lokal için)
bind 127.0.0.1
# Şifre koru
requirepass guclu_redis_sifresi_2024
# Maksimum bellek
maxmemory 256mb
maxmemory-policy allkeys-lru
# Persistence
save 900 1 # 900 saniyede 1 değişiklik olduysa kaydet
save 300 10 # 300 saniyede 10 değişiklik
save 60 10000 # 60 saniyede 10000 değişiklik
systemctl restart redis
Redis CLI Temel Komutları
# Bağlan
redis-cli
redis-cli -h 127.0.0.1 -p 6379 -a sifre
# Kimlik doğrulama
AUTH sifre
# Anahtar-değer
SET kullanici:1:isim "Ahmet Yılmaz"
GET kullanici:1:isim
# TTL (saniye cinsinden yaşam süresi)
SETEX oturum:token123 3600 "kullanici_id:42"
TTL oturum:token123 # Kalan süre
PERSIST oturum:token123 # TTL kaldır
# Anahtarları listele
KEYS kullanici:*
SCAN 0 MATCH kullanici:* COUNT 100 # Büyük DB için güvenli
# Anahtar sil
DEL kullanici:1:isim
Redis Veri Yapıları
String (Metin):
SET sayac 0
INCR sayac # 1
INCRBY sayac 10 # 11
DECRBY sayac 3 # 8
Hash (Nesne/Map):
HSET kullanici:42 isim "Ahmet" email "ahmet@sitem.com" yas 30
HGET kullanici:42 isim
HGETALL kullanici:42
HMSET urun:1 isim "Laptop" fiyat 15000 stok 50
List (Sıralı Liste):
RPUSH isler "iş1" "iş2" "iş3"
LPOP isler # Baş'tan al (queue)
LRANGE isler 0 -1 # Tüm liste
Set (Benzersiz Küme):
SADD online_kullanicilar "user1" "user2" "user3"
SMEMBERS online_kullanicilar
SISMEMBER online_kullanicilar "user1"
SREM online_kullanicilar "user2"
Sorted Set (Sıralı Küme - Leaderboard):
ZADD puan_tablosu 1500 "oyuncu1" 2300 "oyuncu2" 800 "oyuncu3"
ZRANGE puan_tablosu 0 -1 WITHSCORES
ZREVRANGE puan_tablosu 0 2 # İlk 3
ZSCORE puan_tablosu "oyuncu1"
PHP ile Redis
apt install php-redis
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('sifre');
// Önbellekleme örneği
function getKullanici($id) {
global $redis, $pdo;
$cacheKey = "kullanici:{$id}";
$cached = $redis->get($cacheKey);
if ($cached) {
return json_decode($cached, true);
}
$stmt = $pdo->prepare("SELECT * FROM kullanicilar WHERE id = ?");
$stmt->execute([$id]);
$kullanici = $stmt->fetch(PDO::FETCH_ASSOC);
// 1 saat önbellekle
$redis->setex($cacheKey, 3600, json_encode($kullanici));
return $kullanici;
}
// Session yönetimi
$redis->setex("session:{$token}", 3600, json_encode($sessionData));
Node.js ile Redis
npm install redis
const { createClient } = require('redis');
const client = createClient({
socket: { host: '127.0.0.1', port: 6379 },
password: 'sifre'
});
await client.connect();
// Önbellekleme
async function getUrun(id) {
const cached = await client.get('urun:' + id);
if (cached) return JSON.parse(cached);
const urun = await db.query('SELECT * FROM urunler WHERE id = ?', [id]);
await client.setEx('urun:' + id, 300, JSON.stringify(urun));
return urun;
}
// Rate limiting
async function rateLimit(ip) {
const key = 'ratelimit:' + ip;
const count = await client.incr(key);
if (count === 1) await client.expire(key, 60);
return count > 100; // Saniyede 100 istek limiti
}
Monitoring
# Redis istatistikleri
redis-cli info
redis-cli info memory
redis-cli info stats
# Anlık komut izleme (dikkatli - performans etkiler)
redis-cli monitor
# Yavaş sorgu log
redis-cli slowlog get 10
redis-cli config set slowlog-log-slower-than 10000 # 10ms
# Bellek kullanımı
redis-cli memory usage kullanici:42
Büyükweb VDS sunucularında Redis ile uygulama performansınızı önemli ölçüde artırabilirsiniz. Sunucu kaynaklarınıza göre Redis bellek ayarlarını optimize edin.
Veritabani Performans Optimizasyonu
Veritabani web uygulamalarinin kalbidir.
MySQL/MariaDB Tuning
innodb_buffer_pool_size'i RAM'in %60-70'ine ayarlayin. slow_query_log ile yavas sorgulari tespit edin. max_connections optimize edin.
Indeksleme
WHERE, JOIN, ORDER BY sutunlarina indeks ekleyin. EXPLAIN ile sorgu planlari analiz edin. Composite index kullanin.
Baglanti Havuzu
ProxySQL ile gelismis baglanti yonetimi. Connection pooling ile maliyet azaltma. Persistent connections kullanin.
Replikasyon
Master-Slave ile okuma yukunu dagitin. Galera Cluster ile multi-master yuksek erisilebilirlik. Semi-senkron replikasyon degerlendirin.
Yedekleme
mysqldump mantiksal, xtrabackup fiziksel yedek. Binary log ile point-in-time recovery. Incremental yedekleme ile tasarruf.
Sik Sorulan Sorular
MySQL mi PostgreSQL mi?
MySQL cogu web uygulamasi ile uyumlu. PostgreSQL gelismis veri tipleri ve JSON icin ideal. CMS'ler genelde MySQL kullanir.
Veritabanim buyudu ne yapmaliyim?
Gereksiz verileri temizleyin, tablo optimize edin, arsivleme yapin, partitioning kullanin.
Ne siklikla yedek almaliyim?
Kritik veritabanlari saatlik, standart siteler gunluk. Buyuk degisikliklerden once manuel yedek.
Sonuc
Veritabani optimizasyonu uygulama performansini dogrudan etkiler. Indeksleme, tuning ve yedekleme ile veri katmaninizi guclendirin.
Veritabani Boyut Yonetimi
Buyuk Tablolar icin Stratejiler
- Partitioning: Tarihe gore tablolari bolumlendirin. Sorgu performansi artar.
- Arsivleme: Eski verileri arsiv tablolarina tasiyin.
- Sikistirma: InnoDB sikistirmasi ile disk kullanimini %50-75 azaltin.
WordPress Veritabani Optimizasyonu
- wp_options autoload: Gereksiz autoload kayitlari temizleyin.
- Post revisions: wp-config.php'de WP_POST_REVISIONS sinirlayin.
- Transient veriler: Suresi dolmus verileri duzenli temizleyin.
- Spam yorumlar: Toplu silin.
Veritabani Guvenlik
- Varsayilan portu degistirin
- Uygulama bazli kullanici olusturun
- Minimum gerekli yetki verin
- SSL ile baglanti sifreleyin
- Duzenli guvenlik taramasi yapin
Hosting ve Sunucu Terimleri Sozlugu
| Terim | Aciklama |
|---|---|
| VDS | Virtual Dedicated Server - Sanal ozel sunucu |
| NVMe SSD | Non-Volatile Memory Express - En hizli disk teknolojisi |
| LiteSpeed | Yuksek performansli web sunucu yazilimi |
| CloudLinux | Paylasimli hosting icin kaynak izolasyon isletim sistemi |
| cPanel | Populer web hosting kontrol paneli |
| Plesk | Web hosting ve sunucu yonetim paneli |
| KVM | Kernel-based Virtual Machine - Tam sanallastirma teknolojisi |
| DDoS | Distributed Denial of Service - Dagitik hizmet engelleme saldirisi |
| SSL/TLS | Veri iletisimini sifreleyen guvenlik protokolu |
| TTFB | Time to First Byte - Sunucu yanit suresi |
| CDN | Content Delivery Network - Icerik dagitim agi |
| WAF | Web Application Firewall - Web uygulama guvenligi duvari |
| IOPS | Input/Output Operations Per Second - Disk performans olcusu |
| Uptime | Sunucunun kesintisiz calisma suresi yuzdesi |
| Bandwidth | Veri transfer kapasitesi |
Bu terimleri anlamak, hosting ve sunucu hizmetlerini daha bilinçli secmenize yardimci olur. Detayli bilgi icin Buyukweb blog yazilarini takip edin veya teknik destek ekibimize danisIn.
Teknik Destek ve Yardim Kanallari
Buyukweb olarak musterilerimize birden fazla destek kanali sunuyoruz:
Canli Destek (Tawk.to)
Web sitemiz uzerinden 7/24 canli destek ile aninda yardim alin. Teknik sorulariniz, fatura islemleriniz ve genel bilgi talepleriniz icin canli destek ekibimiz hizmetinizdedir.
Telefon Destegi
0850 302 60 70 numarasindan hafta ici ve hafta sonu teknik destek alabilirsiniz. Acil durumlar ve karmasik sorunlar icin telefon destegi en hizli cozum yoludur.
E-posta Destegi
destek@buyukweb.com adresine detayli sorun tanimlamanizi gonderin. Ekran goruntuleri ve hata mesajlari ile birlikte gonderdiginiz talepler daha hizli cozumlenir.
Musteri Paneli
my.buyukweb.com uzerinden destek talepleri olusturun, faturalarinizi yonetin ve hizmetlerinizi kontrol edin. Ticket sistemi ile tum iletisiminiz kayit altindadir.
Bilgi Bankasi
Blog yazilarimiz ve rehberlerimiz ile sik karsilasilan sorunlarin cozumlerini kendiniz bulabilirsiniz. WordPress kurulumu, DNS ayarlari, e-posta yapilandirmasi gibi konularda adim adim rehberler mevcuttur.
Buyukweb teknik ekibi, hosting alaninda 17 yillik tecrubesi ile her turlu sorununuza profesyonel cozum sunar.
Etiketler:

