php - $cache->addItem 和 $cache->setItem 之间的 Zf2 缓存区别

标签 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() 函数实现目标。

最佳答案

缓存的目的是快速检索缓存的结果。 如果 ZF2 将所有不同的缓存键(及其数据)聚合到一个文件中,那么就不可能快速获取数据,因为所有昂贵的文件搜索/拆分等都需要发生。 为每个缓存键生成一个文件使这个过程变得简单。 ZF2 将创建缓存键的 MD5 散列,并可以直接从文件系统中检索具有该名称的文件。您看到的不同目录只是散列的一个子串,因此目录的数量将受到限制。

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

关于php - $cache->addItem 和 $cache->setItem 之间的 Zf2 缓存区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21180479/

相关文章:

php - 带套接字 io 和 redis 的 laravel echo 服务器

php - 如何通过IP地址获取国家代码和货币代码?

jquery - JCrop 缓存图像

php - nginx php-fpm 每秒缓存相同的多个请求

caching - Magento:如何知道缓存了多少 block

PHP MySQL 代码优化

php 表不完整

PHP MySQL 合并具有相同列值的行

php - 如果 Zend 中包含特殊字符,如何获取参数值?

zend-framework - 捕获当前 Action 中另一个 Action 的输出?