我尝试将值保存到自定义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”?
答案 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">