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.