缓存加标签
<?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); }