php memecache 缓存分组不解
Jun 13, 2016 pm 12:58 PM
php memecache 缓存分组疑惑
在php memcache缓存里,我只找到 add,delete两种方法添加或删除缓存,没有分组功能
像JAVA版 memecache有分组功能,如我用一个用户日记分组 当我更新了日记,可以删除此日记分组缓存,我的个人日记列表,我的WAP版日记列表也更新
我想有如何功能
add("cacheGroup","cacheName1",$value1);
add("cacheGroup","cacheName2",$value2);
add("cacheGroup","cacheName3",$value3);
deleteGroup("cacheGroup");
然后上面三个缓存都清除
php memecache缓存API如下
Memcache::add ― 添加一个值,如果已经存在,则返回false
Memcache::addServer ― 添加一个可供使用的服务器地址
Memcache::close ― 关闭一个Memcache对象
Memcache::connect ― 创建一个Memcache对象
memcache_debug ― 控制调试功能
Memcache::decrement ― 对保存的某个key中的值进行减法操作
Memcache::delete ― 删除一个key值
Memcache::flush ― 清除所有缓存的数据
Memcache::get ― 获取一个key值
Memcache::getExtendedStats ― 获取进程池中所有进程的运行系统统计
Memcache::getServerStatus ― 获取运行服务器的参数
Memcache::getStats ― 返回服务器的一些运行统计信息
Memcache::getVersion ― 返回运行的Memcache的版本信息
Memcache::increment ― 对保存的某个key中的值进行加法操作
Memcache::pconnect ― 创建一个Memcache的持久连接对象
Memcache::replace ― R对一个已有的key进行覆写操作
Memcache::set ― 添加一个值,如果已经存在,则覆写
Memcache::setCompressThreshold ― 对大于某一大小的数据进行压缩
Memcache::setServerParams ― 在运行时修改服务器的参数
------解决方案--------------------
add("cacheGroup","cacheName1",$value1);
add("cacheGroup","cacheName2",$value2);
add("cacheGroup","cacheName3",$value3);
deleteGroup("cacheGroup");
这样也就是一个key 控制一数组
<br /> class mem<br /> {<br /> public $memcache=null;<br /> public $array=array();<br /> public function __construct()<br /> {<br /> $this->memcache = new Memcache;<br /> $this->memcache->connect('localhost', 11211) or die ("Could not connect");<br /> }<br /> public function add($parent="",$key="",$value="")<br /> {<br /> $this->array[$key]=$value;<br /> $this->memcache->set($parent,$this->array,false,500);<br /> }<br /> public function deleteGroup($key=null)<br /> {<br /> $this->memcache->delete($key);<br /> }<br /> public function get($key=null)<br /> {<br /> return $this->memcache->get($key);<br /> }<br /> }<br /> $mem=new mem();<br /> $mem->add("cacheGroup","cacheName1","1");<br /> $mem->add("cacheGroup","cacheName2","2");<br /> $mem->add("cacheGroup","cacheName3","3");<br /> //$mem->deleteGroup("cacheGroup");<br /> var_Dump($mem->get('cacheGroup'));<br /> <br />
------解决方案--------------------
这里其实是用了一个小技巧,来避免使用一个数组(作为一个group)存放内容,如果你的数据过多的话,并且group里元素个数也很多的话,会频繁更新同一个数组的内容,并且不见得就是要读取一个元素时就是要读取全部的数据。
这种机制不是靠MC(memcache的缩写,下同)来控制缓存的过期时间,而是靠自己控制是否缓存过期!
设置这个缓存的内容,就是整个组的过期时间。因为是靠
public function getGroup($group, $name) {
// 如果已经过期
if(parent::get($group) return null;
}
return parent::get($group.'_'.$name);
}
上面的代码来判断是否过期,这样所有这个group里的数据,都有了统一的时间验证标准,只要parent::get($group)

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Solution : Votre organisation vous demande de modifier votre code PIN

Comment ajuster les paramètres de bordure de fenêtre sous Windows 11 : modifier la couleur et la taille

Comment changer la couleur de la barre de titre sous Windows 11 ?

Comment activer ou désactiver les aperçus miniatures de la barre des tâches sur Windows 11

Problèmes d'erreur OOBELANGUAGE dans la réparation de Windows 11/10

Afficher le guide de mise à l'échelle sur Windows 11

10 façons de régler la luminosité sous Windows 11

Comment désactiver l'authentification de navigation privée pour iPhone dans Safari ?
