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

use*_*436 2 php caching zend-framework zend-framework2

我有1000个对象,每个对象需要一个"键".

例如

$this->setItem("1", $object);
$this->setItem("2", $object);
Run Code Online (Sandbox Code Playgroud)

我的问题是,每次我使用$this->setItem()$this->addItem()Zend正在创建一个带.dat文件的新文件夹.

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

因此,我问这两个函数有什么区别?

当然,我可以通过该addItem()功能实现目标.

Bra*_*sen 6

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

  • setItem 将始终将数据写入指定的键(如果数据已存在则覆盖).
  • addItem 如果还没有数据存在,则只会写入数据.