Zend framework Zend缓存存在函数

Zend framework Zend缓存存在函数,zend-framework,caching,zend-cache,Zend Framework,Caching,Zend Cache,我在当前项目中使用Zend Cache,它工作正常。 但我希望它工作得更快,所以我想在使用zend cache的加载功能之前检查缓存是否存在 以下是我的代码: $cache = Zend_Registry::get('cache'); if(!$result = $cache->load('firstfile')) { $newArray = 'firstfile'; $cache->save($newArray, 'firstfile'); } else {

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

$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 cache的文档。它说我们只使用这种加载方式来检查缓存是否存在。我想知道是否还有其他可用的zend缓存函数,如hasCached或类似的函数,以便在使用load函数之前,我们可以使用它来检查缓存是否存在


提前感谢……:)

恐怕没有这样的功能

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

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

Memcache和Memcached与上述不同

对于文件缓存,检查密钥是否存在涉及文件查找,而文件查找本身速度较慢

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

如果底层缓存后端没有检查缓存密钥存在的方法,Zend cache除了在引擎盖下运行
load
函数之外,没有其他方法提供它,这完全违背了拥有
hasKey
函数的目的。在使用“慢速”缓存机制的情况下,查找实际上会使您的速度减慢更多。

函数返回存储的缓存ID数组

所以我想你可以试试这样:

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

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

这是应用程序中的瓶颈吗?如果您想为了优化而对此进行优化,请不要。先打开你的应用程序,看看它是否值得优化。嘿,mingos,谢谢你的回复。我想了解zend cache,不仅仅是优化项目,它是关于学习和探索zend的,所以有没有任何zend功能,我们可以检查缓存是否存在…你好,doydoy,谢谢你的回复。我测试了你的代码,它工作得很好,但我了解了文件适配器“test”的另一个功能,它在保存或加载缓存之前为我们提供缓存是否存在的信息。谢谢……:)您只需一次调用(除非有新缓存)就可以优化我的想法,并将结果放入注册表。即使您更改了缓存系统(文件、apc等),此方法仍然有效。如果您有其他解决方案,请编写它。:)检查缓存是否存在并在其开始加载后进行检查不是一个好主意,因为在检查和加载之间,缓存可能会过期或被其他进程删除。顺便说一句,
getIds
返回一个包含所有缓存ID的数组,该数组可能非常慢,而且并非所有后端都支持该数组。