我在当前项目中使用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缓存的文档。它说我们只使用这种方式加载来检查缓存是否存在。我想知道是否有其他类似hasCached的zend缓存函数可用,这样我们就可以在使用加载函数之前使用它来检查缓存是否存在。
提前感谢…:)
恐怕没有这样的函数。
ZendCache是其他几种缓存机制的包装器。我不是100%熟悉它们,例如,我不知道Redis或XCache是否提供了一种检查缓存密钥是否存在的方法。
APC不存在-如果尝试加载缓存条目失败,则密钥不存在。
Memcached和Memcached不一样——和上面一样。
在文件缓存的情况下,检查密钥的存在涉及到文件查找,这本身就很慢。
数据库缓存也是如此——您需要启动SQL查询,而SQL查询本身相对较慢。
如果底层缓存后端无法检查缓存密钥的存在,那么Zend cache除了在后台运行load
函数之外,没有其他方法可以提供它,这根本无法实现具有hasKey
函数的目的。在"慢速"缓存机制的情况下,查找实际上会使您的速度更慢。
getIds()
函数返回存储的缓存ID的数组。
所以我想你可以试试这样的东西:
$id_list = $cache->getIds();
if (in_array('firstfile', $id_list)) {
$result = $cache->load('firstfile');
}
我没有测试它,只是一个想法。:)