gpt4 book ai didi

php - CakePHP Cache::write() 键可以按模型分组吗?

转载 作者:行者123 更新时间:2023-12-04 00:31:13 24 4
gpt4 key购买 nike

考虑以下因素;

Cache::write('Model.key1' , 'stuff');
Cache::write('AnotherModel.key1' , 'stuff');
Cache::write('Model.key2' , 'stuff');

我可以从缓存中删除一组键吗?

例如,如果我想清除“Model”的所有缓存数据,但将“AnotherModel”保留在缓存中,我想使用以下内容;

Cache::delete('Model.*');

这种事情在CakePHP 1.3.x中可以实现吗?

谢谢!

最佳答案

对于那些刚刚在 Google 上搜索这个问题的人(就像我一样),Cake 2.2 现在支持这种功能(无需为每个“组”创建单独的缓存配置)。

这里有一些解释,尽管缺少一些细节:
http://book.cakephp.org/2.0/en/core-libraries/caching.html#using-groups

但这就是我在我的应用程序中所做的,而且看起来效果很好。 ;-)

/app/Config/core.php

Cache::config('default', array(
'engine' => $engine,
...
'groups' => ['navigation'],
));

模型afterSave Hook :

function afterSave($created) {
// This deletes all keys beginning with 'navigation'
Cache::clearGroup('navigation');
parent::afterSave($created);
}

然后在我的 Controller /模型中需要昂贵的查询...

// We create a unique key based on parameters passed in
$cacheKey = "navigation.$sitemapId.$levelsDeep.$rootPageId";
$nav = Cache::read($cacheKey);
if (!$nav) {
$nav = $this->recursiveFind(
'ChildPage',
['page_id' => $rootPageId],
$levelsDeep
);
Cache::write($cacheKey, $nav);
}

关于php - CakePHP Cache::write() 键可以按模型分组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5872397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com