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)

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Windows 11에서 창 테두리 설정을 조정하는 방법: 색상 및 크기 변경

Windows 11에서 제목 표시줄 색상을 변경하는 방법은 무엇입니까?

Windows 11에서 작업 표시줄 축소판 미리 보기를 활성화 또는 비활성화하는 방법

Safari에서 iPhone의 개인 브라우징 인증을 끄는 방법은 무엇입니까?
