php memecache 緩衝分組不解

來源:互聯網
上載者:User
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) < time()) {
return null;
}

return parent::get($group.'_'.$name);
}

上面的代碼來判斷是否到期,這樣所有這個group裡的資料,都有了統一的時間驗證標準,只要parent::get($group) < time()成立,即便MC中有資料或者說資料沒有到期,我們也認為到期了
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.