PS: 俺快給公司開了.因為公司即將倒閉.
memcached 這個東西是個十分好的東西.做為PHPer不懂用的話如果擠身於php高手之列呢.所以有此一章
在自己的LINUX 下配置好了 memcached , 按照網上的配置訪問問題都不大.網上的memcached的安裝教程都挺正確的.
不過按照自己的環境要注意幾點.
第一就是在安裝 memcached 之前 必須先編譯安裝好 libevent 包. 這個有下.自己百度
第二就是 編譯 libevent 包的時候記得是 ./configure --prefix=/usr 編譯到 /usr 目錄.
因為usr 目錄下有個lib 目錄.裡面全都是 xx.so xx.so.1 之類的LIB庫.
裝完了libevent 以後 再開始 安裝 memcached .
裝 memcached 也要注意.網上講的也不是很好.
網上講的是改php.ini 的 extension dir 地址. 其實只要我們在 編譯生成 memcached.so 以後.放我們設置好的存放so的目錄下就行了.
以上幾點是我在安裝時候的得到的. 自己看著辦吧. 其實安裝挺簡單的.
然後就是使用 memcached 了. 使用memcached 有兩種辦法.第一種就是用pecl 包 的 memcached 模塊. 不過這辦法要編譯. 第二種是使用 memcached-client .php 文件. 這個速度上當然不夠好了.所以我選擇了第一種方法.
使用memcached 其實挺簡單的.不過也是看你使用的具體環境了.也有可能是復雜的.
現在我就一個一個對 pecl 的memcached 裡面的方法 一個一個試.呵呵. 反正俺快沒工作了.時間多......
1
Memcache::add 方法
這個方法就是在 往內存裡面添加變量 挺爽看例子
如果變量已經存在內存中.那麼就會返回 false . 我只給出基本招式.自己靈活運用了.
Memcached:: set 方法
設置 變量在內存中的值
有參數 同 Memcached:: add 一樣
1 為 變量在內存中的標志 2 為 變量的值 3為是否壓縮標志 4為 變量在內存中的存活秒數
看例子吧. 昏 上不了圖..太大.只能手寫了
<?php
$mem = new Memcache;
$mem->connect('localhost',11211) or die("not connect");
!$mem->set('mykey','good job'') && die("not input memory");
echo($mem->get('mykey')); //沒壓縮前
!$mem->set('mykey','good job',MEMCACHE_COMPRESSED,50) && die("not input memory");
echo($mem->get('mykey')); // 壓縮和設置了變量在內存中的存活時間
?>
壓縮是否有用.如果我們把一個占字節大的變量存放在內存.當然壓縮後占內存小拉.
?>
3
Memcached :: get 方法
這個方法看名字就知道 是從內存中獲取 變量 ,前面我們存過變量進去的嘛還記得吧.呵呵
使用方法很簡單
看:
<?php
$mem=new Memcache;
$mem->connect('localhost',11211) or die("not connect");
if(!$mem->get('kesdy')){
echo 'xx';
}
?>
如果要獲取的變量之前沒存過到內存或是已經過期.那麼會返回空.
4
Memcache::connect 這個方法不用講了吧. 看上面的所有例子都有用到.
第一個參數是: memcache 服務器的IP地址..第二個參數是: memcache 的監聽端口. 默認是11211
Memcache::pconnect 這個也不用說了吧 .. 呵呵 長連接
5
Memcache :: replace() 方法
這個方法看名字就知道.是替換在內存中已存在的變量的值和參數等.
如果 變量在內存中已經存在 但我們想改變他的值最好就不要用 Memcache :: set () 方法. 在這種情況來說效率上 replace() 效率更快更好
上菜
<?php
$mem = new Memcache;
$mem->connect('localhost',11211);
$mem->set('mykey','xxeedd');
$mem->replace('mykey','dddddddddddddd');
echo($mem->get('mykey'));
?>
上面是輸出 ddddddddddddddddddddd
可以看出 給替換了吧.呵呵
6
Memcache::increment 方法
這個是對 內存變量的值為 數值的有效.
<?php
$mem = new Memcache;
$mem->connect('localhost',11211);
$mem->set('mykey',5);
$mem->increment('mykey',2); //這樣的話 mykey 的值就自動加了 2 成了 7
echo($mem->get('mykey'));
?>
Memcache::decrement 方法 和他剛好相反.
7 Memcache:: delete() 方法
這個方法是手動刪除一個在內存中的變量.
<?php
$mem = new Memcache;
$mem->connect('localhost',11211);
$mem->set('mykey',5);
$mem->delete('mykey'); //刪除,還可以帶個參數是 在多少秒後進行刪除. $mem->delete('mykey',50);
echo($mem->get('mykey'));
?>
夠簡單的了.自己看下
8
Memcache :: flush()
使存在內存中的所有變量全部失效.
用法也很簡單.
<?php
$mem = new Memcache;
$mem->connect('localhost',11211);
$mem->set('mykey',5);
$mem->flush();
?>
恩基本講完了.懂用這幾個 東西. memcached 基本也就那樣了..
下面我試下 memcached 多進程 和集群下的效果如何.
以後再做講解了..... memcached和mysql簡單綜合應用.rar(8.51 KB)