Autor Zpráva
Slark
Profil
Prosím potřeboval bych poradit co bude efektivnější v mé situaci. Mám data které pomocí PHP zpracovávám a následně ukládám do DB. Při průchodu polem nových dat, které si stáhnu ověřuji zda už se taková položka v databázi náhodou nenachází, tzn. něco ve smyslu:

$novaData= []; /** velké pole dat stažených z cizího zdroje **/
$mojeData = [];  /** moje data co mám aktuálně v databázi **/

foreach($novaData as $item)
{
  /* ověřuji zda se položka již v DB nachází */
  if(isset($mojeData[$item->id])
  {
     continue;
  }
  else
  {
    /* vložit řádek do DB */
  }
}

a jde mi vlastně o to, že pole $mojeData může obsahovat velké množství (200 - 300 tis.) dat (resp. entit). Zajímalo by mě jestli když bych si data po vytažení db uložil do Redisu zda by pak čtení bylo méně náročnější na paměť. Samozřejmě mohl bych si nainstalovat Redis a vyzkoušet si to, ale mě by celkově zajímalo jak je optimalizováno když si ukládám nějaké data do pole pro dočasné použití, zkrátka jestli je např. Redis pro tento případ vhodný nebo je to úplně jedno. Chápu že cache jako takovou bych hlavně využil v případě kdy mi jde o to po znovuvyžádnání nějakých dat nesahat na DB a načíst je z cache. V mém případě bych vždy do DB sahal tak jako tak jen s tím rozdílem že bych si data neukládal do pole ale do Redisu.

Snad není můj dotaz příliš zmatený a je pochopitelné co vlastně chci. Je možné že jsem úplně mimo a řeším 2 věci co spolu vůbec nesouvisí tak se předem omlouvám za případnou kravinu.

Děkuji všem za nakopnutí.
Keeehi
Profil
Tak pokud budeš data z databáze vyčítat stylem
while($novaData = $queryResult->fetch_assoc()) {
místo celého držení v paměti, tak redis asi nemá smysl.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0