日期:2014-05-17  浏览次数:20566 次

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 控制一数组
PHP code

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); 这个不就是添加一个缓存么?他怎么成了设置缓存时间?