缓存加标签

Posted Lonely

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了缓存加标签相关的知识,希望对你有一定的参考价值。

<?php
#缓存支持TAG标签实现
#为对TAG做分散存储,SO,TAG标签量不能太.
$key="1000";
$val=array(/*big data*/);
$tags=array("a","b");
$tag_key="my_tags_key";
#设置	
$cval=array(
	$val,
	$tags
);
$tagval=cache_get($tag_key);
if(!is_array($tagval))$tagval=array();
foreach($tags as $v){
	if(!isset($tagval[$v]))
		$tagval[$v]=array();
	if(!in_array($key,$tagval[$v]))
		array_push($tagval[$v],$key);
}
cache_set($tag_key,$tagval);
cache_set($key,$cval);
#通过KEY获取数据
$val=cache_get($key);
if(is_array($val)){
	list($val,$tags)=$val;
	if(is_array($tags)&&count($tags)>0){
		$tagval=cache_get($tag_key);
		foreach($tags as $v){			
			if(!isset($tagval[$v])||in_array($key,$tagval[$v])){
				cache_delete($key);
				$val=null;
				break;
			}				
		}
	}
}
#通过TAG获取数据
$tag="a";
$tagval=cache_get($tag_key);
if(!is_array($tagval))$tagval=array();
$val=array();
if(isset($tagval[$tag])&&is_array($tagval[$tag])){
	foreach($tagval[$tag] as $v){
		$sval=cache_get($v);
		if($sval!=null)array_push($val,$sval);
	}
}
#通过key删除数据
cache_delete($key);
#通过tag删除数据
$tag="a";
$tagval=cache_get($tag_key);
if(!is_array($tagval))$tagval=array();
if(isset($tagval[$tag])&&is_array($tagval[$tag])){
	foreach($tagval[$tag] as $v){
		cache_delete($v);
	}
}

  

以上是关于缓存加标签的主要内容,如果未能解决你的问题,请参考以下文章

Android主流视频播放及缓存实现原理调研

Android获取各个应用程序的缓存文件代码小片段(使用AIDL)

django-缓存的三种应用

Mybatis复杂查询动态sql及缓存详解

Android中切换标签片段之间的延迟

操作栏标签片段中的片段?