Magento 2保存并加载到自定义缓存

时间:2017-08-07 09:49:33

标签: caching magento2

我尝试将值保存到自定义Magento 2缓存中。

这是我在Model / Cache / Type.php

下的自定义缓存的代码
class Type extends \Magento\Framework\Cache\Frontend\Decorator\TagScope
{

const TYPE_IDENTIFIER = 'cache_tag';

const CACHE_TAG = 'CACHE_TAG';

/**
 * @param \Magento\Framework\App\Cache\Type\FrontendPool $cacheFrontendPool
 */
public function __construct(\Magento\Framework\App\Cache\Type\FrontendPool $cacheFrontendPool)
{
    parent::__construct($cacheFrontendPool->get(self::TYPE_IDENTIFIER), self::CACHE_TAG);
}

}

这是etc / cache.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Cache/etc/cache.xsd">
<type name="xxx_cache" translate="label,description" instance="XXX\XXX\Model\Cache\Type">
    <label>XXX Cache type</label>
    <description>XXX cache description.</description>
</type>

现在我尝试使用以下命令将数据保存并加载到此自定义缓存中:

$this->cache->save(serialize("Data"), md5("Identifier"));

$data = $this->cache->load(md5("Identifier"));

$this->logger->debug("Data: " . print_r(unserialize($data)), true);

这是记录器输出:[2017-08-07 09:37:08] main.DEBUG: Data: {"is_exception":false} []

为什么我没有收到字符串“Data”?

1 个答案:

答案 0 :(得分:0)

CACHE_TAG必须与缓存类型定义中使用的name=匹配。案件无关紧要。

选项1 - 将const CACHE_TAG = 'CACHE_TAG';更改为const CACHE_TAG = 'xxx_cache';

或选项2更改

<type name="xxx_cache" translate="label,description" instance="XXX\XXX\Model\Cache\Type">

<type name="cache_tag" translate="label,description" instance="XXX\XXX\Model\Cache\Type">