有没有办法使用Cache :: deleteMany()函数删除基于通配符的缓存文件。
例如,我想删除名为posts_2_20160801
的缓存文件,其中第一个数字是user_id,数字字符串是日期。因此,此缓存文件包含用户在给定的分页日期之前发布的所有帖子。
所以我希望能够删除user_id的缓存文件。由于日期可能几乎任何我需要一个通配符。
像Cache::deleteMany(['posts_2*']);
有没有办法做到这一点,或者我是以错误的方式思考这个问题。
答案 0 :(得分:0)
我不知道memcached,但File和Redis引擎不支持这种删除缓存的方法。
我的解决方案是创建一个扩展所需的Cake缓存引擎类的类(如RedisEngine
或FileEngine
)并覆盖deleteMany
函数,以便在传递字符串而不是一个数组,它进行通配符搜索并返回所有键,然后将返回的键数组传递给父函数。
我知道File
引擎和Redis
引擎可能需要进行大量编码,而且必须非常小心。