#memcache是一套分散式快取軟體,用於資料快取及分散式網站session存儲等。使用key=>value方式存儲,支援資料壓縮存儲處理及資料過期處理。
value只支援string,如需要其他格式,可以先轉換為json再儲存。
使用方法:
<?php$m = new Memcache;$m->connect('localhost', 11211);$m->set('foo', 100); // 保存数据echo $m->get('foo'); // 读取数据?>
用memcache作為數據緩存,步驟一般是
1.判斷memcache是否有數據,如果有則直接返回,否則從資料來源中獲取資料。
2.從資料來源取得資料後,寫入memcache作為緩存,留待下次請求時使用。
判斷memcache是否有數據,一般是透過get方法取得數據,根據數據是否false來判斷。
<?php$m = new Memcache;$m->connect('localhost', 11211);$m->set('foo', 100);if($m->get('foo')){ echo 'foo 存在<br>'; }else{ echo 'foo 不存在<br>'; }$m->delete('foo');if($m->get('foo')){ echo 'foo 存在<br>'; }else{ echo 'foo 不存在<br>'; }?>
但這樣判斷不夠嚴謹,如果value是false或null時則會被判斷為不存在,我們可以透過判斷key是否存在來判斷資料是否存在。
<?php$m = new Memcache;$m->connect('localhost', 11211);// 正常值判断echo '正常值判断:';$m->set('foo', 100);if(check_key_exists($m, 'foo')){ echo 'foo key存在<br>'; }else{ echo 'foo key不存在<br>'; }// false判断echo 'false判断:';$m->set('foo', false);if(check_key_exists($m, 'foo')){ echo 'foo key存在<br>'; }else{ echo 'foo key不存在<br>'; }// null判断echo 'null判断:';$m->set('foo', null);if(check_key_exists($m, 'foo')){ echo 'foo key存在<br>'; }else{ echo 'foo key不存在<br>'; }// 数据过期后判断,1秒后过期echo '过期判断:';$m->set('foo', 100, 0, 1); sleep(2);if(check_key_exists($m, 'foo')){ echo 'foo key存在<br>'; }else{ echo 'foo key不存在<br>'; }// delete后判断echo 'delete后判断:';$m->set('foo', 100);$m->delete('foo');if(check_key_exists($m, 'foo')){ echo 'foo key存在<br>'; }else{ echo 'foo key不存在<br>'; }/** * @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中文網其他相關文章!