我有 1000 个对象,每个对象都需要一个“键”。
例如
$this->setItem("1", $object);
$this->setItem("2", $object);
我的问题是,每次我使用 $this->setItem()
或 $this->addItem()
时,Zend 都会创建一个带有 .dat
文件。
我只想为所有对象创建一个 .dat
文件,但是我可以用 $this->getItem("key")
调用它>
因此,我想问一下这两个函数有什么区别?
当然,我可以通过 addItem()
函数实现目标。
最佳答案
缓存的目的是快速检索缓存的结果。 如果 ZF2 将所有不同的缓存键(及其数据)聚合到一个文件中,那么就不可能快速获取数据,因为所有昂贵的文件搜索/拆分等都需要发生。 为每个缓存键生成一个文件使这个过程变得简单。 ZF2 将创建缓存键的 MD5 散列,并可以直接从文件系统中检索具有该名称的文件。您看到的不同目录只是散列的一个子串,因此目录的数量将受到限制。
setItem
将始终向指定键写入数据(如果数据已存在则覆盖)。addItem
只会在没有数据存在的情况下写入数据。
关于php - $cache->addItem 和 $cache->setItem 之间的 Zf2 缓存区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21180479/