1

我在当前项目中使用 Zend Cache 并且工作正常。
但我希望它工作得更快,所以我想在使用 zend 缓存的加载功能之前检查缓存是否存在。
以下是我的代码:

$cache = Zend_Registry::get('cache');

if(!$result = $cache->load('firstfile')) {
    $newArray = 'firstfile';
    $cache->save($newArray, 'firstfile');
} else {

    echo 'retrieving cache data';
    Zend_Debug::dump($result);
}

我阅读了zend缓存的文档。它说我们只使用这种方式加载来检查缓存是否存在。我想知道是否还有其他可用的 zend 缓存功能,例如 hasCached 或类似的东西,因此我们可以在使用加载功能之前使用它来检查缓存是否存在。

提前致谢... :)

4

2 回答 2

1

恐怕没有这样的功能。

Zend Cache 是围绕其他几种缓存机制的包装器。我不是 100% 熟悉它们,例如,我不知道 Redis 或 XCache 是否提供了一种检查缓存键是否存在的方法。

APC 不存在 - 如果尝试加载缓存条目失败,则密钥不存在。

Memcache 和 Memcached 与上面不同。

在文件缓存的情况下,检查键是否存在涉及文件查找,这本身​​很慢。

这同样适用于数据库缓存——您需要启动一个 SQL 查询,它本身相对较慢。

如果底层缓存后端没有检查缓存键是否存在的方法,那么 Zend Cache 没有办法提供它,只能在底层运行load函数,这完全违背了拥有hasKey函数的目的. 在“慢速”缓存机制的情况下,查找实际上会使您减慢速度。

于 2014-04-15T12:16:31.247 回答
0

getIds()函数返回存储的缓存 ID 数组。

所以我认为你可以尝试这样的事情:

$id_list =  $cache->getIds();
if (in_array('firstfile', $id_list)) {
    $result = $cache->load('firstfile');
}

我没有测试它,只是一个想法。:)

于 2014-04-15T12:31:28.627 回答