首页 / 缓存 / phpmemecache缓存分组不解
phpmemecache缓存分组不解
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了phpmemecache缓存分组不解,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3035字,纯文字阅读大概需要5分钟。
内容图文
![phpmemecache缓存分组不解](/upload/InfoBanner/zyjiaocheng/219/87a92ff7d5744c3cb8243c27e6536bf5.jpg)
在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 控制一数组
class mem
{
public $memcache=null;
public $array=array();
public function __construct()
{
$this->memcache = new Memcache;
$this->memcache->connect('localhost', 11211) or die ("Could not connect");
}
public function add($parent="",$key="",$value="")
{
$this->array[$key]=$value;
$this->memcache->set($parent,$this->array,false,500);
}
public function deleteGroup($key=null)
{
$this->memcache->delete($key);
}
public function get($key=null)
{
return $this->memcache->get($key);
}
}
$mem=new mem();
$mem->add("cacheGroup","cacheName1","1");
$mem->add("cacheGroup","cacheName2","2");
$mem->add("cacheGroup","cacheName3","3");
//$mem->deleteGroup("cacheGroup");
var_Dump($mem->get('cacheGroup'));
------解决方案--------------------
这里其实是用了一个小技巧,来避免使用一个数组(作为一个group)存放内容,如果你的数据过多的话,并且group里元素个数也很多的话,会频繁更新同一个数组的内容,并且不见得就是要读取一个元素时就是要读取全部的数据。
这种机制不是靠MC(memcache的缩写,下同)来控制缓存的过期时间,而是靠自己控制是否缓存过期!
设置这个缓存的内容,就是整个组的过期时间。因为是靠
public function getGroup($group, $name) {
// 如果已经过期
if(parent::get($group) < time()) {
return null;
}
return parent::get($group.'_'.$name);
}
上面的代码来判断是否过期,这样所有这个group里的数据,都有了统一的时间验证标准,只要parent::get($group) < time()成立,即便MC中有数据或者说数据没有过期,我们也认为过期了
内容总结
以上是互联网集市为您收集整理的phpmemecache缓存分组不解全部内容,希望文章能够帮你解决phpmemecache缓存分组不解所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。