您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

php memecache 缓存分组不解

2025/4/11 11:50:49发布16次查看
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 控制一数组
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'));

------解决方案--------------------
引用:1、
你在 setgroupexpire 使用 parent::set($group, $expire); 这个不就是添加一个缓存么?他怎么成了设置缓存时间?
这里其实是用了一个小技巧,来避免使用一个数组(作为一个group)存放内容,如果你的数据过多的话,并且group里元素个数也很多的话,会频繁更新同一个数组的内容,并且不见得就是要读取一个元素时就是要读取全部的数据。
这种机制不是靠mc(memcache的缩写,下同)来控制缓存的过期时间,而是靠自己控制是否缓存过期!
设置这个缓存的内容,就是整个组的过期时间。因为是靠
public function getgroup($group, $name) {
        // 如果已经过期
        if(parent::get($group)             return null;
        }
return parent::get($group.'_'.$name);
    }
上面的代码来判断是否过期,这样所有这个group里的数据,都有了统一的时间验证标准,只要parent::get($group)
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product