Warum wird der Cache im Dateisystem gespeichert, wenn Redis als Cache-Backend konfiguriert ist?

7

Ich verwende einen Aufruf an Mage::getSingleton('core/cache')->save()einen meiner Controller und speichere den zwischengespeicherten Wert im Dateisystem ( var/cache/), obwohl Redis als mein Cache-Backend konfiguriert ist und anscheinend alle anderen Caches in Magento ordnungsgemäß in Redis gespeichert werden.

Hier ist der Aufruf von save ():

Mage::getSingleton('core/cache')->save($imageUrl, $cacheKey, array(Mage_Core_Model_Config::CACHE_TAG));

Hier ist mein app/etc/local.xml:

<cache>
    <backend>Cm_Cache_Backend_Redis</backend>
    <backend_options>
        <server>redis11.i</server>
        <port>6379</port>
        <database>2</database>
        <password></password>
        <persistent>cache-db2</persistent>
        <force_standalone>0</force_standalone>
        <connect_retries>1</connect_retries>
        <automatic_cleaning_factor>0</automatic_cleaning_factor>
        <compress_data>1</compress_data>
        <compress_tags>1</compress_tags>
        <compress_threshold>20480</compress_threshold>
        <compression_lib>gzip</compression_lib>
    </backend_options>
</cache>

Warum wird dieser zwischengespeicherte Wert anstelle von Redis im Dateisystem gespeichert?

kalenjordan
quelle
Es gibt einige Probleme auf github.com/colinmollenhour/Cm_Cache_Backend_Redis/…, aber keines von ihnen scheint eine sehr nützliche Antwort zu geben :(
David Manners
Danke David - gut zu wissen! Tritt dieses Problem gerade selbst auf?
Kalenjordan
Eh nicht wirklich haben wir den Cache-Ordner, aber er ist nur leer.
David Manners

Antworten:

5

Sie sollten Mage :: app () -> getCache () -> save () verwenden, wenn der Cache in der Methode getCache () initialisiert wird, indem Sie die Konfiguration abrufen und diese für das Cache-Objekt festlegen, während dies der Konstruktor Mage_Core_Model_Cache nicht tut Soweit ich sehen kann, wird dies auf das Standard-Caching-Modell zurückgesetzt.

Habe einen kurzen Test gemacht mit:

Mage::getSingleton('core/cache')->save(now(), 'time123', array(Mage_Core_Model_Config::CACHE_TAG)); 

AND

Mage::app()->getCache()->save(now(), 'time12345', array(Mage_Core_Model_Config::CACHE_TAG));

Weitere Informationen:

Mage_Core_Model_App :: _ initCache verwendet tatsächlich Folgendes, um das Cache-Objekt einzurichten:

$this->_cache = Mage::getModel('core/cache', $options);

Dies bedeutet, dass das Kern-Cache-Objekt nicht zur Registrierung als Singleton zur Registrierung hinzugefügt wird. Wenn Sie es zum ersten Mal als Singleton aufrufen, wird ein neues Kern-Cache-Objekt erstellt und der Konstruktor ohne Optionen aufgerufen.

Martijn Schot
quelle
1
Wow, ich fühle mich gerade ein bisschen verlegen. Das hat funktioniert! Vielen Dank!
Kalenjordan