windows 中memcached安裝配置與使用教程

來源:互聯網
上載者:User

memcached軟體下載安裝教程

1、下載memcached軟體壓縮包,裡面有32位和64位兩個版本,選擇你系統對應版本。解壓放某個盤下面,比如在D:wampbin目錄下

memcached軟體下載:memcached.zip

2、在終端(CMD命令列)輸入以下命令下:


①輸入d:切換至D盤;
②輸入cd wampbin切換至D:wampbin目錄;
③輸入dir查看目前的目錄下是否有memcached軟體。
④輸入:
memcached.exe -d install 安裝
memcached.exe -d uninstall 卸載
memcached.exe -d stop 停止
memcached.exe -h 擷取所有協助
3、在啟動之後串連:
D:wampbin> telnet 127.0.0.1 11211    –串連memcache連接埠11211使用quit退出。

memcached伺服器CMD設定命令

啟動Memcache 常用參數
-p 設定連接埠號碼(預設不設定為: 11211)
-U UDP監聽連接埠(預設: 11211, 0 時關閉)
-l 綁定地址(預設:所有都允許,無論內外網或者本機更換IP,有安全隱患,若設定為127.0.0.1就只能本機訪問)
-d 獨立進程運行:
-d start 啟動memcached服務
-d restart 重起memcached服務
-d stop|shutdown 關閉正在啟動並執行memcached服務
-d install 安裝memcached服務
-d uninstall 卸載memcached服務
-u 綁定使用指定用於運行進程
-m 允許最大記憶體用量,單位M (預設: 64 MB)
-P 將PID寫入檔案,可以使得後邊進行快速進程終止,需要與-d 一起使用
-M 記憶體耗盡時返回錯誤,而不是刪除項
-c 最大同時串連數,預設是1024
-f 塊大小增長因子,預設是1.25
-n 最小分配空間,key+value+flags預設是48
-h 顯示協助

Memcache的常用操作命令

• 5個常用的命令
– stats: 當前所有memcached伺服器啟動並執行狀態資訊
– add: 添加一個資料到伺服器
– set: 替換一個已經存在的資料,如果資料不存在,則和add命令相同。
– get: 從伺服器端提取指定的資料。
– delete: 刪除指定的單個資料,如果要清除所有資料,可以使用flush_all指令。
 • Memcache的協議的錯誤部分主要是三個錯誤提示之提示指令:
– ERROR — 普通錯誤資訊,比如指令錯誤之類的
– CLIENT_ERROR <錯誤資訊> — 用戶端錯誤
– SERVER_ERROR <錯誤資訊> –伺服器端錯誤
 
資料管理命令
• 格式:<命令> <鍵> <標記> <有效期間> <資料長度>
其中:
– 命令:add(添加)、set(修改)、delete(刪除)、get(擷取)
– <鍵> -key,是發送過來指令的key內容
– <標記> – flags,是調用set指令儲存資料時候的flags標記
– 有效期間:是資料在伺服器上的有效期間限,如果是0,則資料永遠有效,單位是秒
– 資料的長度,block data 塊資料的長度,一般在這個個長度結束以後下一行跟著block data資料內容,
– 發送完資料以後,用戶端一般等待伺服器端的返回,伺服器端的返回:
– STORED 資料儲存成功
– NOT_STORED 資料儲存失敗,是因為伺服器端這個資料key已經存在

PHP的memcache功能擴充模組安裝

①把下載的php_memcache.dll檔案放在PHP的擴充庫目錄下(PHP程式EXT目錄下):

②在PHP.INI檔案中加入“extension=php_memcache.dll”這句話,開啟memcache.dll擴充庫:
③重啟appache服務。
使用phpinfo()函數查看memcache.dll是否安裝成功:

PHP操作MemCache類的方法


Memcache類
Memcache::add ———— 增加一個條目到快取服務器
Memcache::addServer ————向串連池中添加一個memcache伺服器
Memcache::close ————關閉memcache串連
Memcache::connect ————開啟一個memcached服務端串連
Memcache::decrement ————減小元素的值
Memcache::delete ————從服務端刪除一個元素
Memcache::flush ————清洗(刪除)已經儲存的所有的元素
Memcache::get ————從服務端檢回一個元素
Memcache::getExtendedStats ————快取服務器池中所有伺服器統計資訊
Memcache::getServerStatus ———— 擷取一個伺服器的線上/離線狀態
Memcache::getStats ———— 擷取伺服器統計資訊
Memcache::getVersion ———— 返回伺服器版本資訊
Memcache::increment ———— 增加一個元素的值
Memcache::pconnect ———— 開啟一個到伺服器的持久化串連
Memcache::replace ———— 替換已經存在的元素的值
Memcache::set ————Store data at the server
Memcache::setCompressThreshold —————開啟大值自動壓縮
Memcache::setServerParams ————運行時修改伺服器參數和狀態
Memcache 函數memcache_debug ———— 轉換調試輸出的開/關

MemCache的執行個體應用

 代碼如下 複製代碼

<?php
//1. 建立對象
$mem = newMemcache();
//2. 添加伺服器
$mem->addServer("192.168.150.250",11211);
$mem->addServer("192.168.150.138",11211);
$mem->addServer("192.168.112.128",11211);
//3. 放置資訊
$mem->add("mystr","hello memcache!",MEMCACHE_COMPRESSED,0);
$mem->add("myarray",array(10,20,30,40),MEMCACHE_COMPRESSED,0);
$mem->add("myob",newStu(),MEMCACHE_COMPRESSED,0);
//4. 擷取資訊
echo $mem->get("mystr")."<br/>";
var_dump($mem->get('myarray'));
echo "<br/>";
$mem->get("myob")->getinfo();
?>

MemCache的執行個體應用

<?php
    //建立memcache對象
    $mem = new Memcache;
 
    //串連memcache伺服器
    $mem -> connect("localhost", 11211);
 
    class Test {
        public $a=1;
        public $b=2;
        public $c=3;
    }
 
    $mem -> add("one", "this is memecache test!", MEMCACHE_COMPRESSED, time()+60*60*24*31);
    $mem -> add("two", array("111", "222", "3333"), MEMCACHE_COMPRESSED, 0);
    $mem -> add("three",new Test(), MEMCACHE_COMPRESSED, 0 );
    $mem -> add("four", 100, MEMCACHE_COMPRESSED, 0);
 
    $mem -> set("five", "this is a demo!", MEMCACHE_COMPRESSED, 1000);
 
    var_dump($mem->get("one"));
    echo '<br>';
 
    var_dump($mem->get("two"));
    echo '<br>';
 
    var_dump($mem->get("three"));
    echo '<br>';
 
    var_dump($mem->get("five"));
    echo '<br>';
 
    var_dump($mem->get("four"));
    echo '<br>';
 
    var_dump($mem->get(array("one", "five")));
    echo '<br>';
 
    $mem -> delete("one");
    $mem -> delete("two", 0);  
    $mem -> flush();
 
    $mem -> close();
?>

memcached伺服器的安全防護


訪問mysql資料庫伺服器時必須通過使用者驗證後才能進入,而訪問memcached伺服器則是直接通過用戶端串連操作,沒有任何驗證過程。伺服器如果直接暴漏在互連網上是非常危險的,輕則資料泄漏,重則伺服器被入侵,還有可能存在一些未知的情況,所以危險性是可以預見的。為了安全起見,有以下兩種方法:
1.內網訪問
內網間的訪問能夠有效阻止其他非法的訪問。如果讓分布式的多個memcached伺服器只在內部區域網路中訪問,需要設定Web伺服器中的一塊網卡在內網訪問memcached伺服器,Web伺服器的另外一個網卡對外網。並在memcached伺服器啟動的時候就監聽內網的IP地址和連接埠,memcached的啟動選項使用如下所示:
memcached -d -m 1024 -u root –l 192.168.0.10 –p 11211 –c 1024 start
該命令設定memcached伺服器在啟動後監聽內網的IP地址192.168.0.10,監聽連接埠11211,佔用1024MB記憶體,並且允許最大1024個並發串連。
2.設定防火牆
設定防火牆是簡單有效方式,如果memcached和Web Server在同一台機器上,或只要是有通過外網IP來訪問memcached的情況就需要使用防火牆或者代理程式來過濾非法訪問。一般在Linux系統下常用iptables來指定一些規則防止一些非法的訪問。例如,設定只允許自己的Web伺服器來訪問我們的memcached伺服器,同時組織其他的訪問。防火牆iptables的規則設定如下所示:
iptables –F
iptables –P INPUT DROP
iptables –A INPUT –p tcp –s 192.168.0.10 –-dport 11211 –j ACCEPT
iptables –A INPUT –p udp –s 192.168.0.10 –-dport 11211 –j ACCEPT
上面的iptables規則只允許192.168.0.10這台Web伺服器對memcached伺服器的訪問,能夠阻止一些非法訪問。當然也可以增加一些其他的規則來加強安全性,需要根據自己的需要來進行設定。


memcache執行個體應用——快取資料庫資料

在項目中最常見的MemCache應用,就是緩衝從資料庫中查詢的資料結果,以及儲存會話控制資訊(session)。將資料庫查詢出來的結果使用memcached伺服器進行緩衝,以減少頻繁的資料庫連接及大量的查詢對資料庫造成的壓力。設計的原則是只要資料庫中的記錄沒有被改變,就不需要重新串連資料庫並反覆執行重複的查詢語句,相同的查詢結果都應該從快取服務器中擷取。memcache樣本如下所示:

 代碼如下 複製代碼

<?php
    //建立memcache對象
    $mem = new Memcache;
 
    //串連memcache伺服器
    $mem -> addServer("localhost", 11211);
    $mem -> addServer("192.168.1.137", 11211);
 
    //資料庫的串連和操作
    $sql = "select id, name, pass, age, sex, email from users order by id";
 
    $key=md5($sql);
    //直接從記憶體memcahce要資料
    $data = $mem->get($key);
 
    //如果用資料就從內容中返回資料, 如果沒有才串連資料庫,執行SQL語句
    if(empty($data)) {
 
        //串連
        try {
            $pdo = new PDO("mysql:host=localhost;dbname=xsphp", "root", "123456");
        }catch(PDOException $e) {
            echo "資料庫連接失敗:".$e->getMessage();
        }
 
        //擷取資料,執行查詢語句
        $stmt = $pdo -> prepare($sql);
 
        $stmt -> execute();
 
        $data = $stmt -> fetchAll(PDO::FETCH_ASSOC);
 
        $mem -> set($key, $data, MEMCACHE_COMPRESSED, 10);
 
        echo "這是第一次訪問從資料庫擷取的資料並放到了記憶體中!<br>";
    }
 
    echo '<pre>';
    print_r($data);
    echo '</pre>';
 
    //關閉串連
    $mem -> close();
 
?>

 

相關文章

聯繫我們

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