Hafıza tablosunda yazılı vs önbelleğe alma veri

4 Cevap php

Hangi bu üç yoldan biri ile hızlı bir karma / oturum depolama elde etmek için en iyi yolu olurdu?

Way 1: Create a memory table in MySQL that stores a hash and a timestamp when the entry was created. A MySQL event automatically deletes all entries older than 20 minutes. This should be pretty fast because all data is stored in memory, but the overhead of connecting to the database server might destroy this benefit.

Way 2: I create an empty file with the hash as its filename and create a cronjob that automatically deletes all files older than 20 minutes. This can become slow because of all the read operations on the HDD.

Way 3: Since this is going to be PHP related and we use the Zend Framework I could use the Zend_Cache and store the hash with a time-to-live of 20 minutes.

Ben sadece bazı küçük sağlamalarının için büyük bir yükü olduğunu düşünüyorum çünkü ben, bunun için Memcached veya APC kullanmak istemiyorum.

Eğer benzer senaryolar ile herhangi bir deneyimi var mı? Ben senin deneyim ve bunun için çözümler takdir ediyorum.

4 Cevap

Performans bir sorun varsa ben defenately memcached giderdim. Tüm büyük internet siteleri önbelleğe aksi sunucusu yoğun görevler hatta oturum depolama ve kilitleme mekanizmaları ya için memcached güveniyor.

Memcached bana sorarsanız gitmek için yoludur

Tekerleği yeniden icat etmeyin - memcache kullanın. , Ya Memcache vs MySQL performansını ölçmek ya. Db erişim zaten her zaman genellikle yüksek perf ortamlarda bir darboğaz olduğunu unutmayın.

Ayrıca tüm bu yaklaşımlar ile sorunları ölçekleme düşünüyor musunuz? Kaç sağlamalarının bahsediyorsun? Veri Kaç megabayt hakkında konuşmak?

  1. Bilgisayarınızın belleğinde tutun eğer (sizin varyant 3)
  2. Diskte koy, ama (dosya tabanlı oturumlar kullanırsanız birisi işaret gibi varyant 2, sen $ oturumu kullanabilirsiniz) eğer bellekte tutun
  3. Veritabanını kullan

Eğer çok fazla veri var mı? Memcached kullanın.

Diğerleri söylediler, memcached kullanın. PHP Örneğin Java gibi veritabanı bağlantı havuzu, desteklenen, ben MySQL tavsiye ederim, ama PHP ne olduğunu varlık, memcached tek gerçek cevaptır.