T5清理redis或file缓中带tag的指定缓存
前置条件
项目接口中使用了缓存记录冷数据,然后在后台管理界面中提供了手动管理缓存的功能,可删除指定key的缓存或者批量删除。
正文
下面是一个简单事例
接口controller中使用带tag缓存
public function getCategories(){
$data=Cache::tag(CACHE_TAG)->get(CACHE_CATEGORIES);
if($data==null){
$data = Db::name('category')
->where('status',1)
->select();
Cache::tag(CACHE_TAG)->set(CACHE_CATEGORIES,$data,3600*24*30);
}
return $data;
}
后台管理缓存
缓存数据初始页面
public function cache(){
//加载application下的配置
$configuration = Config::load(APP_PATH.'config.php');
$type=$configuration['cache']['type'];
//缓存中使用了tag,此处获取tag值,在redis服务器中可以查看到该tag包含的所有缓存键
$key = 'tag_' . md5(CACHE_TAG);
//此处使用application下的cache配置,如果直接使用Cache::get方法,加载的cache来自后台config.php所定的缓存类型
//目的是为了解决application与后台配置的缓存类型不同,导致加载出错
$value = Cache::connect($configuration['cache'])->get($key);
$tagKeys = array_filter(explode(',', $value));
$data = [];
//redis缓存的处理
if('redis'==strtolower($type)) {
foreach ($tagKeys as $id => $key) {
$data[$id]['sequence'] = $id + 1;
$data[$id]['key'] = $