WordPressHosting

WordPress Redis Object Cache Kurulumu: Tam Rehber 2026

WordPress Redis object cache kurulumu, veritabanı sorgu yükünü azaltıp sayfa üretim süresini kısaltmak isteyen orta ve büyük ölçekli siteler için en etkili performans müdahalelerinden biri. Bu rehberde Redis’in ne işe yaradığını, ne zaman gerçekten gerekli olduğunu, sunucu ve WordPress tarafındaki kurulum adımlarını, performans doğrulamasını ve sık karşılaşılan hataları uygulamalı biçimde ele alıyoruz.

Redis Object Cache Nedir?

WordPress, her sayfa isteğinde onlarca (bazen yüzlerce) veritabanı sorgusu çalıştırır: menü verisi, widget ayarları, eklenti seçenekleri, yazı meta verileri gibi. Object cache katmanı, bu sorguların sonuçlarını bellek içinde (RAM) tutarak aynı sorgunun tekrar tekrar veritabanına gitmesini engeller. WordPress çekirdeği varsayılan olarak yalnızca “geçici” (persistent olmayan) bir object cache kullanır; bu önbellek her istek sonunda sıfırlanır. Redis gibi kalıcı (persistent) bir object cache backend’i eklendiğinde, önbellek istekler arasında da hayatta kalır ve tekrarlayan sorgular doğrudan bellekten karşılanır.

Redis Neden Bu Kadar Hızlı?

Redis’in performans avantajının temel nedeni basit: veriyi diskte değil, RAM’de tutuyor. Bir MySQL sorgusu diskten (veya disk önbelleğinden) veri okurken belirli bir gecikme yaşar; aynı veri Redis’te anahtar-değer (key-value) çifti olarak bellekte tutulduğunda erişim süresi mikrosaniyeler seviyesine iniyor. WordPress bağlamında bu şu anlama geliyor: bir sayfa yüklendiğinde “aktif eklentiler listesi”, “site seçenekleri” veya “menü yapısı” gibi sık kullanılan ama nadiren değişen veriler, her seferinde veritabanına gitmek yerine doğrudan bellekten okunuyor. Özellikle çok sayıda eklenti çalıştıran ve her istekte onlarca get_option() çağrısı yapan sitelerde bu fark birikimli olarak büyük bir etki yaratıyor.

Bunun pratik sonucu, veritabanı sunucusu üzerindeki yükün azalması. Paylaşımlı bir MySQL sunucusunda CPU ve I/O kaynakları sınırlıyken, object cache devreye girdiğinde veritabanına giden sorgu sayısı düşüyor; bu da hem sayfa üretim süresini kısaltıyor hem de yoğun trafik anlarında veritabanının darboğaz olma riskini azaltıyor.

Ne Zaman Gerçekten İhtiyaç Duyulur?

Redis object cache her site için birinci öncelik değildir. Aşağıdaki tabloda hangi senaryoda hangi katmanın öncelikli olduğuna dair genel bir çerçeve bulabilirsiniz.

Site Profili Öncelikli Katman Redis Gerekli mi?
Küçük blog, düşük trafik, paylaşımlı hosting Sayfa önbellekleme (page cache), OPcache Genellikle gerekli değil
WooCommerce/üyelik sitesi, oturum bazlı dinamik içerik Object cache + page cache birlikte Evet, öncelikli
Yüksek trafikli haber/içerik sitesi Object cache, CDN, page cache Evet, önerilir
Çok sayıda eklenti ile ağır yönetim paneli Object cache Genellikle fayda sağlar

Kısaca: sayfalarınızın büyük kısmı statik ve sayfa önbelleğiyle zaten hızlıysa (örneğin girişsiz ziyaretçilere sunulan bir blog), Redis’in getirisi sınırlı kalabilir. Buna karşılık WooCommerce, üyelik sistemi veya sık güncellenen dinamik içerik varsa, sayfa önbelleği bu istekleri atlayamadığı için object cache’in etkisi çok daha belirgin oluyor.

Burada altı çizilmesi gereken bir nokta var: Redis, sayfa önbelleklemenin (page cache) yerine geçmiyor, onu tamamlıyor. Sayfa önbelleği tüm HTML çıktısını saklarken, object cache yalnızca veritabanı sorgu sonuçlarını saklıyor. Bu ikisi genellikle birlikte, birbirini tamamlayan iki katman olarak düşünülmeli; biri diğerinin yerine geçen bir alternatif değil.

Redis mi, Memcached mi?

Özellik Redis Memcached
Veri kalıcılığı (disk’e yazma) Destekliyor (isteğe bağlı) Desteklemiyor, tamamen bellek içi
Veri yapıları String, hash, list, set, sorted set Yalnızca key-value
WordPress eklenti desteği Geniş (Redis Object Cache ve W3TC; WP Rocket ayrı object cache ister) Sınırlı ama mevcut
Çok işlemcili ölçekleme Kısmi (Redis Cluster ile) Doğal çoklu iş parçacığı desteği
Genel öneri Çoğu WordPress kurulumu için varsayılan tercih Basit, salt önbellekleme senaryoları için yeterli

Pratikte güncel WordPress eklenti ekosisteminin Redis’e daha fazla odaklanması nedeniyle, yeni bir kurulum yapıyorsanız Redis genellikle daha sürdürülebilir bir seçim oluyor.

PHP Tarafında Gerekli Uzantı: phpredis mi, Predis mi?

WordPress’in Redis’e bağlanabilmesi için PHP tarafında bir istemci kütüphanesine ihtiyaç var. İki yaygın seçenek bulunuyor:

  • phpredis: C dilinde yazılmış bir PHP eklentisi (extension). Performansı Predis’e göre belirgin şekilde daha yüksek, çoğu barındırma sağlayıcısında kurulu geliyor veya pecl install redis ile kolayca eklenebiliyor.
  • Predis: Saf PHP ile yazılmış bir kütüphane, sunucu tarafında ekstra bir uzantı kurulumu gerektirmiyor ama performansı phpredis’in gerisinde kalıyor.

Sunucunuzda uzantı kurulumuna erişiminiz varsa phpredis tercih edilmesi öneriliyor. Bir sunucuda phpredis’in kurulu olup olmadığını şu komutla kontrol edebilirsiniz:

php -m | grep redis

Çıktı boşsa uzantı kurulu değil demektir; bu durumda barındırma panelinizden (cPanel > Select PHP Version > Extensions) veya sunucu paket yöneticisiyle (sudo apt install php-redis) uzantıyı ekleyebilirsiniz.

Kurulum Adımları

Aşağıdaki adımlar bir VPS veya kendi sunucunuzu yönettiğiniz bir ortam için geçerlidir. Paylaşımlı hosting kullanıyorsanız, Redis’in barındırma sağlayıcınız tarafından sunulup sunulmadığını kontrol etmeniz gerekir; birçok paylaşımlı hosting planında Redis sunucusu kurulumuna izin verilmez.

  1. Sunucuda Redis servisini kurun ve başlatın.
  2. Redis’in yalnızca localhost’tan erişilebilir olduğunu doğrulayın.
  3. WordPress tarafında bir Redis object cache eklentisi kurun (örneğin “Redis Object Cache” eklentisi).
  4. wp-config.php dosyasına gerekli sabitleri ekleyin.
  5. Eklenti panelinden “Enable Object Cache” adımını tamamlayın.
  6. Site genelinde sayfa yükleme süresini ve veritabanı sorgu sayısını ölçerek önceki duruma göre karşılaştırın.

Sunucu Tarafında Redis Kurulumu (Ubuntu/Debian)

sudo apt update
sudo apt install redis-server
sudo systemctl enable redis-server
sudo systemctl start redis-server
redis-cli ping
# Beklenen çıktı: PONG

wp-config.php Yapılandırması

define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_TIMEOUT', 1);
define('WP_REDIS_READ_TIMEOUT', 1);
define('WP_REDIS_DATABASE', 0);
// WP_CACHE sayfa önbelleği içindir; object cache için zorunlu değildir.

Redis Object Cache eklentisini etkinleştirdikten sonra kendi panelinden Enable Object Cache adımını tamamlayın. object-cache.php dosyası başka bir eklentiye ait olabilir veya bağlantısı bozulmuş olabilir; yalnızca dosyanın varlığı çalışan Redis bağlantısını kanıtlamaz. Eklentinin bağlantı ve drop-in durumunu birlikte kontrol edin.

Birden Fazla Site (Multisite/Paylaşımlı Sunucu) İçin Veritabanı Ayrımı

Aynı Redis sunucusunu birden fazla WordPress kurulumu için kullanıyorsanız, her site için farklı bir WP_REDIS_DATABASE numarası (0-15 arası) veya farklı bir WP_REDIS_PREFIX değeri tanımlamanız gerekir. Aksi halde farklı sitelerin önbellek anahtarları çakışabilir ve bir sitenin verisi diğerinde görünebilir.

define('WP_REDIS_PREFIX', 'siteA-benzersiz-anahtar-');

Docker ile Redis Kurulumu (Alternatif Yöntem)

Sunucunuzu Docker tabanlı bir yapıda yönetiyorsanız, Redis’i ayrı bir konteyner olarak da çalıştırabilirsiniz. Örnek bir docker-compose.yml parçası şu şekilde olabilir:

services:
  redis:
    image: redis:7-alpine
    restart: unless-stopped
    command: redis-server --requirepass ${REDIS_PASSWORD:?parola_gerekli} --maxmemory 256mb --maxmemory-policy allkeys-lru
    ports:
      - "127.0.0.1:6379:6379"
    volumes:
      - redis-data:/data

volumes:
  redis-data:

Bu yapılandırmada Redis yalnızca localhost üzerinden (127.0.0.1) erişilebilir hale getiriliyor, bir parola zorunlu kılınıyor ve bellek dolduğunda en az kullanılan anahtarların otomatik silinmesini sağlayan allkeys-lru politikası uygulanıyor. WordPress konteyneri aynı Docker ağındaysa, WP_REDIS_HOST değerini servis adı olan redis olarak ayarlamanız yeterli.

cPanel / Plesk Gibi Kontrol Panellerinde Kurulum

Yönetilen bir VPS veya bulut sunucu kullanıyorsanız ve cPanel/Plesk gibi bir kontrol paneliniz varsa, süreç genellikle şu şekilde ilerliyor:

  1. Kontrol panelinin “Software” veya “Extensions” bölümünden Redis’in kurulu olup olmadığını kontrol edin; birçok modern panel Redis’i tek tıkla kurulabilir bir servis olarak sunuyor.
  2. PHP sürümünüz için redis uzantısının etkin olduğunu “Select PHP Version > Extensions” ekranından doğrulayın.
  3. Redis servisinin varsayılan portu ve soket yolu panelde genellikle gösterilir; bu bilgiyi wp-config.php ayarlarında kullanın.
  4. Panel üzerinden bir Redis parolası oluşturulduysa, bu parolayı WP_REDIS_PASSWORD sabitine ekleyin.

WooCommerce Sitelerinde Özel Durum

WooCommerce mağazalarında sepet ve oturum verileri sık sık değiştiği için, object cache’in en çok fayda sağladığı senaryolardan biri burası. Ancak dikkat edilmesi gereken bir nokta var: WooCommerce’in oturum yönetimi varsayılan olarak veritabanını kullanıyor, object cache bu davranışı otomatik değiştirmiyor. Object cache; ürün, kategori ve site ayarları gibi nispeten sabit verilerin hızını artırırken, sepet/oturum performansı için ayrıca bir oturum yönetimi optimizasyonu (örneğin Redis tabanlı oturum saklama) değerlendirilebilir. Bu iki katmanı birbirine karıştırmamak, beklentileri doğru yönetmek açısından önemli.

Performans Testi ve Doğrulama

Kurulumdan sonra iyileşmeyi doğrulamak için şu adımlar öneriliyor:

  • Redis object cache eklentisinin durum panelinden “isabet oranını” (hit rate) kontrol edin; sağlıklı bir kurulumda bu oran zamanla yükselmelidir.
  • Query Monitor gibi bir eklenti ile sayfa başına çalışan veritabanı sorgu sayısını önce ve sonra karşılaştırın.
  • Sunucu tarafında redis-cli info stats komutuyla toplam isabet/kayıp (hits/misses) sayılarını izleyin.
  • Gerçek kullanıcı deneyimini yansıtan bir metrik olarak, yönetim paneli ve dinamik sayfaların (sepet, hesabım gibi) yüklenme süresini karşılaştırın.

Basit Bir Öncesi/Sonrası Karşılaştırma Yöntemi

Sağlıklı bir karşılaştırma yapmak için şu sırayı izlemek pratikte işe yarıyor: önce object cache kapalıyken aynı sayfayı art arda üç kez yükleyip ortalama süreyi ve sorgu sayısını not edin, ardından object cache’i etkinleştirip önbelleğin “ısınması” için sayfayı birkaç kez ziyaret edin, son olarak aynı ölçümü tekrarlayın. Tek seferlik bir ölçüm yanıltıcı olabilir; sunucu yükü, ağ gecikmesi gibi değişkenler sonucu etkileyebileceği için birden fazla ölçümün ortalamasını almak daha güvenilir bir tablo çıkarıyor. Query Monitor eklentisinin “Queries” sekmesinde önbelleğe alınan (cached) ve alınmayan sorguların oranını görebilirsiniz; bu oranın kurulum sonrası belirgin biçimde artması beklenen bir sonuç.

Ücretsiz Eklenti mi, Object Cache Pro mu?

WordPress object cache ekosisteminde iki temel seçenek öne çıkıyor: ücretsiz “Redis Object Cache” eklentisi ve ticari bir ürün olan Object Cache Pro. Aralarındaki farkları özetleyen bir karşılaştırma:

Özellik Redis Object Cache (ücretsiz) Object Cache Pro (ticari)
Kurulum kolaylığı Basit, tek eklenti kurulumu Basit, ek yapılandırma seçenekleriyle
İzleme paneli Temel istatistikler Detaylı gerçek zamanlı gösterge paneli
Hata toleransı Standart Bağlantı havuzu, yeniden deneme mekanizmaları gelişmiş
Destek Topluluk desteği Resmi teknik destek dahil
Maliyet Ücretsiz Yıllık lisans ücreti

Küçük ve orta ölçekli çoğu proje için ücretsiz eklenti gereken performansı sağlıyor. Yüksek trafikli, kesinti toleransı düşük kurumsal projelerde ise ticari çözümün sunduğu gelişmiş izleme ve destek paketi tercih sebebi olabiliyor.

Bakım ve Sürekli İzleme

Redis kurulumu tek seferlik bir işlem değil; zaman içinde site büyüdükçe yapılandırmanın da gözden geçirilmesi gerekiyor. Pratikte önerilen bakım rutini şöyle özetlenebilir:

  • Bellek kullanımını periyodik kontrol edin: redis-cli info memory komutuyla kullanılan belleği takip edin; sürekli artan bir eğilim varsa maxmemory değerini veya eviction politikasını gözden geçirin.
  • Yavaş sorgu günlüğünü inceleyin: Redis’in SLOWLOG özelliği, beklenenden uzun süren komutları listeler; bu genellikle verimsiz bir eklenti kullanımına işaret eder.
  • Yeniden başlatma sonrası önbellek ısınmasını göz önünde bulundurun: RDB/AOF kalıcılığı kapalıysa Redis yeniden başladığında önbellek boşalır ve ilk birkaç istek yavaş kalabilir; bu normal bir davranış.
  • Sürüm güncellemelerini takip edin: Hem Redis sunucusunun hem de kullanılan WordPress eklentisinin güncel sürümde tutulması, güvenlik açıkları ve performans iyileştirmelerinden faydalanmak için önemli.

Güvenlik Notları

Redis, varsayılan yapılandırmada kimlik doğrulaması olmadan çalışır. Sunucunuz internete açık bir IP üzerinden erişilebilirse, aşağıdaki önlemler kritik önem taşıyor:

  • Bağlama adresini sınırlayın: redis.conf içinde bind 127.0.0.1 ayarının aktif olduğundan emin olun; Redis’in dışarıya açık olmaması gerekiyor.
  • Parola ekleyin: requirepass yönergesiyle bir erişim parolası tanımlayın ve bu parolayı WP_REDIS_PASSWORD sabitiyle WordPress tarafına da bildirin.
  • Güvenlik duvarı kuralı ekleyin: 6379 portunun yalnızca gerekli sunuculardan erişilebilir olduğunu güvenlik duvarı seviyesinde de doğrulayın.
  • Yetkileri sınırlayın: Desteklenen Redis sürümünde ACL ile kullanıcı/komut yetkilerini belirleyin. rename-command eski yaklaşımdır; flush komutunu körlemesine engellemek eklentinin geçersiz kılma işlemlerini bozabilir. Önce test ortamında eklentinin ihtiyaç duyduğu komutları belirleyin.

Bu önlemlerin hepsi tek tek küçük görünse de, birlikte uygulandığında Redis’i internetten erişilebilen bir “açık kapı” olmaktan çıkarıp yalnızca uygulamanızın kullandığı kapalı bir iç bileşene dönüştürüyor. Özellikle bulut sunucu sağlayıcılarında varsayılan güvenlik duvarı kurallarının tüm portları açık bırakabildiği unutulmamalı; kurulumdan hemen sonra redis-cli -h sunucu_ip ping komutunu dışarıdan bir makineden deneyerek erişimin gerçekten kapalı olduğunu doğrulamak iyi bir alışkanlık.

Sık Yapılan Hatalar ve Çözümleri

Hata / Belirti Olası Neden Çözüm
“Object cache: yok” durumu paneline takılı kalıyor object-cache.php drop-in dosyası oluşmamış Eklentiyi devre dışı bırakıp yeniden etkinleştirin, dosya izinlerini kontrol edin
Sayfalar arası veri karışması (multisite/paylaşımlı sunucu) Aynı Redis veritabanı birden fazla site tarafından paylaşılıyor Her site için ayrı WP_REDIS_DATABASE veya WP_REDIS_PREFIX tanımlayın
“Connection refused” hatası Redis servisi çalışmıyor veya yanlış port systemctl status redis-server ile servisi kontrol edin
İsabet oranı sürekli düşük kalıyor Çok sayıda eklenti her istekte önbelleği geçersiz kılıyor (cache busting) Sorunlu eklentiyi Query Monitor ile tespit edip yapılandırmasını gözden geçirin
Bellek dolup taşma (eviction) uyarısı maxmemory ayarı site boyutuna göre çok düşük redis.conf içinde maxmemory değerini artırın veya uygun bir eviction politikası (allkeys-lru) seçin

Kime, Hangi Durumda Uygun?

Redis object cache; WooCommerce mağazaları, üyelik siteleri, sık güncellenen haber siteleri ve çok sayıda eklentiyle ağırlaşmış yönetim panelleri için belirgin bir performans katkısı sağlıyor. Buna karşılık düşük trafikli, çoğunlukla statik içerik sunan küçük bir blog için öncelik sırası farklı olmalı: önce sağlıklı bir sayfa önbellekleme çözümü ve OPcache yapılandırması tamamlanmalı, Redis daha sonra bir sonraki adım olarak değerlendirilmeli. Paylaşımlı hosting kullanıcıları için ise ilk adım, barındırma sağlayıcısının Redis desteği sunup sunmadığını kontrol etmek; sunmuyorsa VPS’e geçiş veya sağlayıcı değişikliği gerekebilir. Bu geçişe karar vermeden önce, sitenizin gerçekten object cache’e ihtiyaç duyup duymadığını Query Monitor ile bir hafta boyunca gözlemleyip veritabanı sorgu yükünü somut verilerle değerlendirmek, gereksiz bir altyapı yatırımından kaçınmanıza yardımcı olur. Veritabanı seviyesindeki diğer optimizasyonlar için wp_options optimizasyon rehberimize de göz atabilirsiniz.

Sık Sorulan Sorular

Redis object cache kurulumu paylaşımlı hostingde yapılabilir mi?

Genellikle hayır; çoğu paylaşımlı hosting planı kendi Redis sunucunuzu kurmanıza izin vermez. Bazı barındırma sağlayıcıları ise Redis’i yönetilen bir özellik olarak sunuyor, bu durumda ayrıca kurulum yapmanıza gerek kalmaz.

Redis object cache ile sayfa önbellekleme (page cache) aynı şey mi?

Hayır. Sayfa önbellekleme, tüm HTML çıktısını saklar ve genellikle girişsiz ziyaretçilere hizmet eder. Object cache ise veritabanı sorgu sonuçlarını saklar ve oturum açmış kullanıcılar ile dinamik sayfalarda da çalışır. İkisi birlikte kullanıldığında en iyi sonuç alınır.

Object cache etkinleştikten sonra site yavaşlarsa ne yapmalıyım?

Query Monitor ile hangi sorguların önbelleğe alınıp alınmadığını kontrol edin; bazı eklentiler önbelleği verimsiz kullanabilir. Ayrıca Redis sunucusunun bellek ve CPU kullanımını izleyerek darboğaz olup olmadığını doğrulayın. Nadiren de olsa, Redis sunucusu ile WordPress sunucusu arasındaki ağ gecikmesi yüksekse (örneğin farklı veri merkezlerinde barındırılıyorlarsa) object cache beklenen faydayı sağlamayabilir; bu durumda iki bileşenin aynı yerel ağda olması önerilir.

WP_REDIS_PASSWORD nasıl ayarlanır?

Redis sunucusunda requirepass ile bir parola tanımladıktan sonra, aynı parolayı wp-config.php dosyasında define('WP_REDIS_PASSWORD', 'parolaniz'); satırıyla belirtmeniz yeterli.

Redis’i kaldırırsam site bozulur mu?

Hayır, doğru şekilde kaldırıldığında WordPress otomatik olarak varsayılan (geçici) object cache’e geri döner. Eklentiyi devre dışı bırakıp object-cache.php drop-in dosyasının silindiğini doğrulamanız yeterli.

Redis object cache kurulumu WooCommerce’te sepet sorunlarına yol açar mı?

Doğru yapılandırılmadığında, farklı kullanıcıların önbellek anahtarlarının çakışması teorik olarak mümkün. Bu riski azaltmak için güncel bir object cache eklentisi kullanmak ve WP_REDIS_PREFIX değerini her site için benzersiz tutmak öneriliyor. Sorun yaşanırsa önce object cache’i geçici olarak devre dışı bırakıp sorunun kaynağını izole etmek pratikte işe yarayan bir ilk adım; sorun object cache kaynaklıysa devre dışı bırakmanın ardından belirtiler kaybolur, değilse başka bir bileşene odaklanmak gerekir.

Bağlantı ve Ölçüm Kontrolü

CLI’de php -m çıktısı web sunucusunun PHP-FPM uzantılarını kanıtlamaz; kullanılan web PHP sürümünde de kontrol edin. Docker parolası wp-config.php’de WP_REDIS_PASSWORD ile eşleşmeli ve iki konteyner aynı ağda olmalıdır. Ayrı prefix/veritabanı anahtar çakışmasını önler; erişim izolasyonu sağlamaz ve ortak FLUSHDB bütün veritabanını etkileyebilir. Multisite içinde her alt siteye rastgele farklı veritabanı atamak yerine eklentinin ağ desteğini kullanın. Redis bütün SQL sorgularını otomatik önbelleğe almaz; WordPress object-cache API’sini kullanan veriler yararlanır. Query Monitor’de çalışmış sorguları ve süreyi, object cache panelinde hits/misses verisini ayrı ölçün.

Teknik kaynak: Redis Object Cache — Yapılandırma belgesi.

özgür BAYRAM

Özgür Bayram, WordPress, Laravel, yapay zekâ ve web performansı alanlarında çalışan bir yazılım geliştiricisidir. Bilim Meraklısı’nda teknoloji, yazılım, hosting, SEO ve dijital araçlar hakkında anlaşılır, uygulanabilir rehberler hazırlar. Amacı, teknik konuları sade bir dille anlatarak okuyucuların doğru kararlar vermesine ve sorunlarını güvenle çözmesine yardımcı olmaktır.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu