WordPress ve Magento 2 için Redis Nesne Önbelleği: Kurulum ve En İyi Uygulamalar

Redis, WordPress, WooCommerce ve Magento'yu özellikle sayfa önbelleğe alınamayan sayfalar için belirgin şekilde daha hızlı hale getirebilir. İşte bunu doğru bir şekilde nasıl ayarlayacağınız ve yaygın hatalardan nasıl kaçınacağınız.

Sayfa önbelleklemesi anonim ziyaretleri hızlı hale getirir. Ancak birçok istek sayfa önbelleğinden karşılanamaz: giriş yapmış kullanıcılar, sepet, ödeme, yönetici ve arama. Bu durumlarda, PHP ve veritabanı her istekte işlemi gerçekleştirir.

Redis, veritabanı sonuçlarını önbelleğe alarak ve oturumları bellekte saklayarak tam olarak bu istekleri hızlandıran bir bellek içi veri deposudur. Bu kılavuz, bunu WordPress/WooCommerce ve Magento 2 için nasıl kuracağınızı göstermektedir.

Redis, bir web mağazasında ne yapar

Kullanım Ne depolar. Fayda
Nesne önbelleği (WordPress) Veritabanı sorgularının ve hesaplanan verilerin sonuçları Her istekte daha az veritabanı sorgusu
Varsayılan önbellek (Magento) Yapılandırma, düzen, bloklar, koleksiyonlar Daha hızlı sayfa oluşturma
Sayfa önbelleği (Magento, eğer Varnish yoksa) Tam sayfalar Daha hızlı anonim sayfalar
Oturumlar Kullanıcı oturumları Daha hızlı, birden fazla web sunucusunda çalışır

Redis’i Kurun

Ubuntu/Debian’de:

sudo apt install redis-server
sudo systemctl enable --now redis-server
redis-cli ping

PONG görmelisiniz. PHP uzantısını da yüklemelisiniz (örneğin php8.3-redis) ve PHP-FPM’i yeniden başlatmalısınız.

Temel Redis yapılandırması

In /etc/redis/redis.conf:

bind 127.0.0.1 ::1
protected-mode yes
maxmemory 512mb
maxmemory-policy allkeys-lru
  • bind localhost’a (veya özel bir ağa) bağlayın. Redis’i asla internete açmayın.
  • maxmemory bellek kullanımını sınırlar; verilerinize göre boyutlandırın
  • allkeys-lru, bellek dolduğunda en az kullanılan anahtarları kaldırır, bu da bir önbellek için doğrudur.

oturumlar için, tahliye kullanıcıların çıkış yapması veya sepetlerini kaybetmesi anlamına gelir. ayrı bir Redis örneği (veya en azından ayrı bellek planlaması) kullanın; aktif oturumları beklenmedik bir şekilde tahliye etmeyen bir politika ile, örneğin yeterli bellek ile noeviction veya oturumların sonlanma süreleri varsa volatile-lru kullanarak.

WordPress ve WooCommerce

1. Bir nesne önbellek eklentisi kurun

Popüler Redis Object Cache eklentisi, WordPress önbellek çağrılarını Redis’e gönderen bir drop-in (wp-content/object-cache.php) ekler. Bazı barındırma hizmetleri kendi entegrasyonlarını sağlar.

2. wp-config.php’yi yapılandırın

define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_REDIS_DATABASE', 0 );
define( 'WP_REDIS_PREFIX', 'shop_' );

Birden fazla site aynı Redis sunucusunu paylaşıyorsa, her site için benzersiz bir ön ek kullanın.

3. Etkinleştir

Eklenti ayarlarında veya WP-CLI ile:

wp redis enable
wp redis status

4. Etkiyi kontrol et

Query Monitor eklentisini kullanarak her istekteki veritabanı sorgularını öncesi ve sonrası ile karşılaştırın. Sepet, ödeme, hesap ve yönetici sayfaları en büyük iyileşmeyi göstermelidir.

Magento 2

Magento, varsayılan önbellek, sayfa önbelleği ve oturumlar için Redis’i destekler, bin/magento setup:config:set ile yapılandırılır.

Varsayılan önbellek

bin/magento setup:config:set --cache-backend=redis --cache-backend-redis-server=127.0.0.1 --cache-backend-redis-port=6379 --cache-backend-redis-db=0

Sayfa önbelleği (sadece Varnish kullanmıyorsanız)

bin/magento setup:config:set --page-cache=redis --page-cache-redis-server=127.0.0.1 --page-cache-redis-port=6379 --page-cache-redis-db=1

Üretimde, Varnish önerilen tam sayfa önbelleğidir (bkz. Magento 2 için Varnish kılavuzu).

Oturumlar

bin/magento setup:config:set --session-save=redis --session-save-redis-host=127.0.0.1 --session-save-redis-port=6380 --session-save-redis-db=0

Örnek, oturumlar için 6380 numaralı portta ikinci bir Redis örneği kullanır. Bu şekilde, önbelleği temizlemek müşterilerin çıkış yapmasına neden olmaz.

Yapılandırmayı değiştirdikten sonra:

bin/magento cache:flush

Magento 2 komutları kılavuzu için daha fazla komut.

Güvenlik

  • Sadece localhost veya özel bir ağa bağlanın ve 6379 numaralı portu güvenlik duvarında kapatın.
  • Başka makinelerden erişilebiliyorsa bir şifre (requirepass) veya ACL kullanıcıları ayarlayın.
  • Redis’i güncel tutun
  • Redis’i root olarak çalıştırmayın

İzleme ve sorun giderme

redis-cli info memory
redis-cli info stats | grep -E "keyspace_hits|keyspace_misses|evicted_keys"
redis-cli --latency
  • Önemli tahliyeler önbellek örneğinde: maxmemory‘yi artırın
  • Oturum örneğindeki tahliyeler: sepetlerini kaybeden müşteriler. Belleği artırın veya politikayı düzeltin.
  • Düşük vurma oranı: önbellek çok sık temizleniyor veya anahtarlar yeniden kullanılmıyor
  • Bağlantı hataları: doğru PHP sürümü için PHP’nin Redis uzantısının yüklü olduğunu kontrol edin
  • Dağıtım sonrası eski veriler: dağıtımın bir parçası olarak önbelleği temizleyin (oturum deposunu değil)

Sıkça sorulan sorular

Redis sayfa önbelleğini mi değiştirir?

Hayır. Sayfa önbelleklemesi (Varnish, CDN, eklenti) anonim ziyaretçilere tam sayfalar sunar. Redis, sayfa önbelleğe alınamayan sayfaları hızlandırır. Her ikisini de kullanın.

Redis mi yoksa Memcached mi?

Her ikisi de nesne önbellekleri olarak çalışır. Redis, kalıcılık seçenekleri ve daha fazla veri türü sunar ve Magento ile birçok WordPress barındırıcısı için yaygın bir tercihtir.

Redis ne kadar bellek gerektirir?

Katalog boyutuna ve trafiğe bağlıdır. Orta ölçekli bir mağaza için birkaç yüz megabayt ile başlayın, bellek ve tahliyeleri izleyin ve ayarlayın.

Mağazanızın önbellek ayarlarını doğru bir şekilde mi yapmak istiyorsunuz?

Redis, Varnish ve WordPress, WooCommerce ve Magento mağazaları için sayfa önbelleklemesini yapılandırıyorum. sunucularım ve yedekleme hizmetim veya performans incelemesi talep et kısmına bakın.