[原創] linux 下的 memcached 開發_PHP教程

來源:互聯網
上載者:User
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為 變數在記憶體中的存活秒數

看例子吧. 昏 上不了圖..太大.只能手寫了

$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 方法

這個方法看名字就知道 是從記憶體中擷取 變數 ,前面我們存過變數進去的嘛還記得吧.呵呵

使用方法很簡單
看:
$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() 效率更快更好


上菜

$mem = new Memcache;
$mem->connect('localhost',11211);
$mem->set('mykey','xxeedd');
$mem->replace('mykey','dddddddddddddd');
echo($mem->get('mykey'));
?>

上面是輸出 ddddddddddddddddddddd

可以看出 給替換了吧.呵呵

6

Memcache::increment 方法

這個是對 記憶體變數的值為 數值的有效.

$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() 方法

這個方法是手動刪除一個在記憶體中的變數.

$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()

使存在記憶體中的所有變數全部失效.

用法也很簡單.

$mem = new Memcache;
$mem->connect('localhost',11211);
$mem->set('mykey',5);
$mem->flush();
?>



恩基本講完了.懂用這幾個 東西. memcached 基本也就那樣了..

下面我試下 memcached 多進程 和叢集 下的效果如何.

以後再做講解了..... memcached和mysql簡單綜合應用.rar(8.51 KB)

http://www.bkjia.com/PHPjc/735129.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/735129.htmlTechArticlePS: 俺快給公司開了.因為公司即將倒閉. memcached 這個東西是個十分好的東西.做為PHPer不懂用的話如果擠身於php高手之列呢.所以有此一章 在自...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.