緩存加標籤

<?php
#緩存支持TAG標籤實現
$key="1000";
$val=array(/*big data*/);
$tags=array("a","b");
$tag_prefix="my_tags_key_prefix";
#設置
$cval=array(
    $val,
    $tags
);
foreach($tags as $v){
	$tagval=cache_get($tag_prefix.$v);
    if(!is_array($tagval))$tagval=array();
    if(!in_array($key,$tagval))
        array_push($tagval,$key);
	cache_set($tag_prefix.$v,$tagval);
}
cache_set($key,$cval);
#經過KEY獲取數據
$val=cache_get($key);
if(!is_array($val))
	$val=null;
else{
    list($val,$tags)=$val;
    if(!is_array($tags)){
		$val=null;
	}else if(count($tags)>0){
        foreach($tags as $v){          
			$tagval=cache_get($tag_prefix.$v);
            if(!is_array($tagval)||!in_array($key,$tagval)){
                cache_delete($key);
                $val=null;
                break;
            }              
        }
    }else
		$val=null;
}
#經過TAG獲取數據
$tag="a";
$tagval=cache_get($tag_prefix.$tag);
if(!is_array($tagval))$tagval=array();
$val=array();
foreach($tagval as $v){
    $sval=cache_get($v);
    if($sval!=null)array_push($val,$sval);
}
#經過key刪除數據
cache_delete($key);
#經過tag刪除數據
$tag="a";
$tagval=cache_get($tag_prefix.$tag);
if(!is_array($tagval))$tagval=array();
foreach($tagval as $v){
    cache_delete($v);
}
相關文章
相關標籤/搜索