Zend framework Zend缓存存在函数
我在当前项目中使用Zend Cache,它工作正常。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的加载功能之前检查缓存是否存在
以下是我的代码:
$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的数组,该数组可能非常慢,而且并非所有后端都支持该数组。