使用PHP簡單操作Memcached
記得一定要先啟動Memcached哦!
[root@localhost ~]# /usr/bin/memcached -d -l 127.0.0.1 -p 11211 -m 150 -u root
使用ps命令檢視一下執行狀態:
[root@localhost ~]# ps -ef | grep memcached
顯示執行成功!
接下來就開始使用PHP操作Memcached啦!
1.建立一個Memcached物件
$m = new Memcached();
2.傳入一臺或多臺伺服器
//傳入一臺伺服器
$m->addServer('127.0.0.1','11211');
//傳入多臺伺服器
$servers = array(
array('127.0.0.1','11211'),
array('127.0.0.2','11211')
);
$m->addServers($servers);
//檢視一下執行狀態
print_r($m->getStats());
因為傳入的第二臺伺服器是不存在的,所以無法獲取到正確的資訊。
也可以使用getVersion()來直接獲取memcached的版本資訊。
3.add()方法和get()方法
/*
* add()
* key代表加入快取的key值
* value代表加入快取的value值
* 600代表這條快取的生效時間為600秒,0代表永久生效
*/
$m->add('key','value',600);
/*
* get()
* 通過key值來獲取快取
*/
echo "快取key值:".$m->get('key);
如果我在第一個add()方法下面再新增一個:
$m->add('key','value1',600);
其實這樣是不會覆蓋掉前面的值得,如果想要覆蓋的話可以使用replace()方法
4.replace()方法
$m->add('key','value',600);
$m->replace('key','value11',600);
這樣當我們再次get(‘key’)的時候就會獲取到value11了。
5.set()方法
set()方法其實就集成了add方法和replace方法,如果set的key值是不存在的,它就相當於add方法,如果set的key值已經存在了,它就相當於replace方法,所以一般的時候set方法才是最常用的方法。
$m->set('key','value',600);
6.delete()方法
刪除快取的方法,使用方法:
/*
* delete()
* 傳入一條快取的key
*/
$m->delete('key');
加入我上面新增的快取失效時間還沒有到,執行delete方法後,我們依然無法獲取到這條快取了。
7.flush()方法
直接清除掉所有的快取!(慎用!!!)
8.increment()方法
加法操作,使用方法:
//設定一條key值為num,value為5,永久生效的快取
$m->set('num',5,0);
//沒重新整理一次頁面key值為num的快取value加5
$m->increment('num',5);
//輸出這條快取
echo $m->get('num');
9.decrement()方法
和increment()方法相似,只是變成了減法,具體使用方法和increment()方法一樣。
更加優雅的使用Memcached方法
10.setMulti()方法
如果一直按照前面的方法進行set快取的話,一條一條存入是很慢的,所以Memcached為我們提供給了setMulti()方法,使用方法如下:
//首先定義要存入快取的陣列
$data = array(
'key1'=>'value1',
'key2'=>'value2'
);
/*
* setMulti()
* 第一個引數代表傳入的陣列,第二個引數代表生效時間,0代表永久
*/
$m->setMulti($data,0);
11.getMulti()方法
同樣獲取快取也可以一次獲取多條快取,使用方法如下:
//定義獲取快取的key值得陣列
$get = array('key1','key2');
/*
* getMulti()
* 傳入需要獲取快取的key值
*/
$result = $m->getMulti($get);
var_dump($result);
12.deleteMulti()方法
和getMulti()方法類似,不過是刪除快取,使用方法如下:
$delete = array('key1','key2');
$m->deleteMulti($delete);
這時key值為key1和key2的快取就被刪除掉了。
13.getResultCode()方法
當我執行完一個操作之後可以使用這個方法來檢視執行的情況,使用方法如下:
//剛才我執行了deleteMulti()方法,這時候我可以使用getResultCode()方法來檢視操作是否成功
echo $m->getResultCode();
當正確執行時會放回0;
更多狀態碼請點選:更多狀態碼
14.getResultMessage()方法
和getResultCode()方法的區別是,getResultCode()是返回狀態碼,getResultMessage()方法是返回具體資訊。使用方法如下:
//上面執行deleteMulti()方法
$m->getResultMessage();
這是回返回一個SUCCESS的資訊,告訴我們操作成功了,具體的返回資訊參考上面的更多狀態碼連結!