Zf2缓存$ cache-> addItem和$ cache-> setItem之间的差异

时间:2014-01-17 07:46:01

标签: php zend-framework caching zend-framework2

我有1000个对象,每个对象都需要一个“键”。

例如

$this->setItem("1", $object);
$this->setItem("2", $object);

我的问题是,每次使用$this->setItem()$this->addItem()时,Zend都会创建一个包含.dat文件的新文件夹。

我想为所有对象只创建一个.dat文件,但是我可以用$this->getItem("key")

来调用它

因此,我问这两个功能有什么区别?

当然,我可以使用addItem()函数实现目标。

1 个答案:

答案 0 :(得分:6)

缓存的目的是快速检索缓存的结果。 如果ZF2将所有不同的缓存键(及其数据)聚合在一个文件中,则无法快速获取数据,因为需要进行所有昂贵的文件搜索/拆分等操作。 为每个缓存键生成单个文件使此过程变得简单。 ZF2将创建缓存键的MD5哈希值,并可直接从文件系统中检索具有该名称的文件。您看到的不同目录只是哈希的子字符串,因此目录的数量将受到限制。

  • setItem将始终将数据写入指定的密钥(如果数据已存在则覆盖)。
  • addItem只会在没有数据的情况下写入数据。