Cakephp 3 Cache :: deleteMany()外卡匹配?

时间:2016-08-17 21:49:43

标签: php cakephp caching

有没有办法使用Cache :: deleteMany()函数删除基于通配符的缓存文件。

例如,我想删除名为posts_2_20160801的缓存文件,其中第一个数字是user_id,数字字符串是日期。因此,此缓存文件包含用户在给定的分页日期之前发布的所有帖子。

所以我希望能够删除user_id的缓存文件。由于日期可能几乎任何我需要一个通配符。

Cache::deleteMany(['posts_2*']);

这样的东西

有没有办法做到这一点,或者我是以错误的方式思考这个问题。

1 个答案:

答案 0 :(得分:0)

我不知道memcached,但File和Redis引擎不支持这种删除缓存的方法。

我的解决方案是创建一个扩展所需的Cake缓存引擎类的类(如RedisEngineFileEngine)并覆盖deleteMany函数,以便在传递字符串而不是一个数组,它进行通配符搜索并返回所有键,然后将返回的键数组传递给父函数。

我知道File引擎和Redis引擎可能需要进行大量编码,而且必须非常小心。