首頁  >  文章  >  後端開發  >  如何用php 判斷memcache key/value是否存在方法

如何用php 判斷memcache key/value是否存在方法

jacklove
jacklove原創
2018-06-09 10:19:351470瀏覽

1.memcache簡介

#memcache是​​一套分散式快取軟體,用於資料快取及分散式網站session存儲等。使用key=>value方式存儲,支援資料壓縮存儲處理及資料過期處理。
value只支援string,如需要其他格式,可以先轉換為json再儲存。

使用方法:

<?php$m = new Memcache;$m->connect(&#39;localhost&#39;, 11211);$m->set(&#39;foo&#39;, 100); // 保存数据echo $m->get(&#39;foo&#39;); // 读取数据?>

用memcache作為數據緩存,步驟一般是
1.判斷memcache是​​否有數據,如果有則直接返回,否則從資料來源中獲取資料。
2.從資料來源取得資料後,寫入memcache作為緩存,留待下次請求時使用。

2.判斷memcache數據是否存在

判斷memcache是​​否有數據,一般是透過get方法取得數據,根據數據是否false來判斷。

<?php$m = new Memcache;$m->connect(&#39;localhost&#39;, 11211);$m->set(&#39;foo&#39;, 100);if($m->get(&#39;foo&#39;)){    echo &#39;foo 存在<br>&#39;;
}else{    echo &#39;foo 不存在<br>&#39;;
}$m->delete(&#39;foo&#39;);if($m->get(&#39;foo&#39;)){    echo &#39;foo 存在<br>&#39;;
}else{    echo &#39;foo 不存在<br>&#39;;
}?>

但這樣判斷不夠嚴謹,如果value是false或null時則會被判斷為不存在,我們可以透過判斷key是否存在來判斷資料是否存在。

3.判斷memcache key是否存在

<?php$m = new Memcache;$m->connect(&#39;localhost&#39;, 11211);// 正常值判断echo &#39;正常值判断:&#39;;$m->set(&#39;foo&#39;, 100);if(check_key_exists($m, &#39;foo&#39;)){    echo &#39;foo key存在<br>&#39;;
}else{    echo &#39;foo key不存在<br>&#39;;
}// false判断echo &#39;false判断:&#39;;$m->set(&#39;foo&#39;, false);if(check_key_exists($m, &#39;foo&#39;)){    echo &#39;foo key存在<br>&#39;;
}else{    echo &#39;foo key不存在<br>&#39;;
}// null判断echo &#39;null判断:&#39;;$m->set(&#39;foo&#39;, null);if(check_key_exists($m, &#39;foo&#39;)){    echo &#39;foo key存在<br>&#39;;
}else{    echo &#39;foo key不存在<br>&#39;;
}// 数据过期后判断,1秒后过期echo &#39;过期判断:&#39;;$m->set(&#39;foo&#39;, 100, 0, 1);
sleep(2);if(check_key_exists($m, &#39;foo&#39;)){    echo &#39;foo key存在<br>&#39;;
}else{    echo &#39;foo key不存在<br>&#39;;
}// delete后判断echo &#39;delete后判断:&#39;;$m->set(&#39;foo&#39;, 100);$m->delete(&#39;foo&#39;);if(check_key_exists($m, &#39;foo&#39;)){    echo &#39;foo key存在<br>&#39;;
}else{    echo &#39;foo key不存在<br>&#39;;
}/**
 * @param Obj      $m    memcache obj
 * @param String   $name key name
 * @return Boolean
 */function check_key_exists($m, $name){
    $data = $m->get($name);    return $data!==false;
}?>

輸出:
正常值判斷:foo key存在



## false判斷:foo key存在
null判斷:foo key存在
過期判斷:foo key不存在delete後判斷:foo key不存在#只有key被delete

已經過期

才判斷為不存在,其他情況即使value為null/false,都是存在的。 注意:如果value的值是false

,使用memcache get方法取得到的是

「」空字串

,因為memcache只能保存string數據,所以false在儲存時被轉為空字串了。

本文說明如何用php 判斷memcache key/value是否存在方法,更多相關內容請注意php中文網。

相關推薦:

如何讓php透過header傳送自訂資料


如何透過mysql 利用inet_aton和inet_ntoa來處理ip位址資料


php json資料使用gzip壓縮輸出的相關內容##########

以上是如何用php 判斷memcache key/value是否存在方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn