程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> [原創] linux 下的 memcached 開發

[原創] linux 下的 memcached 開發

編輯:關於PHP編程

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

這個方法就是在    往內存裡面添加變量  挺爽看例子

mem_1.jpg 

如果變量已經存在內存中.那麼就會返回 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)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved