缓存加标签

<?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);
}

  

posted @ 2016-04-02 14:12  liushan  阅读(497)  评论(0编辑  收藏  举报