我有一个查询:
$q = TableRegistry::getTableLocator()->get('Tab1')->find('OneById',
['id' => 1])->cache(function (Query $q) {
return 'q' . md5(serialize($q->clause('where')));
}, 'cQuestions')->first();
cQuestions
是我的自定义缓存配置。
在上述每次执行中,尽管匿名函数的结果相同,查询变量$q
将从数据库中获得新值;缓存被重置。
当我更改匿名功能以设置缓存键时,就像这样:
function (Query $q) {
return 'qtest';
}
重置缓存的问题消失了。
为什么?在两种情况下,密钥缓存都是相同的。