在Windows中安裝Memcached


  Memcached是一個高並發的內存鍵值對緩存系統,它的主要作用是將數據庫查詢結果,內容,以及其它一些耗時的計算結果緩存到系統內存中,從而加速Web應用程序的響應速度。

  Memcached最開始是作為Linux應用程序被安裝在Linux服務器上來使用的,不過自從開源之后,它又被重新編譯以適用於Windows環境。JellycanNorthscale兩個站點都提供了Windows的二進制可執行文件下載,下面是下載的地址:

  http://code.jellycan.com/files/memcached-1.2.5-win32-bin.zip

  http://code.jellycan.com/files/memcached-1.2.6-win32-bin.zip

  http://downloads.northscale.com/memcached-win32-1.4.4-14.zip

  http://downloads.northscale.com/memcached-win64-1.4.4-14.zip

  http://downloads.northscale.com/memcached-1.4.5-x86.zip

  http://downloads.northscale.com/memcached-1.4.5-amd64.zip

  在1.4.5版本之前,memcached可以被安裝成一個服務,但之后的版本中該功能被移除了。因此memcached的安裝可以分為兩類,第一類是1.4.5之前的版本,另一類是1.4.5之后的版本。

安裝memcached < 1.4.5:

  1. 將下載的文件解壓到任意目錄。

  2. 1.4.5之前版本的memcached會被安裝成一個服務,以administrator打開控制台,運行下面的命令:

c:\memcached\memcached.exe -d install

* 注意將路徑c:\memcached\memcached.exe替換成你本地的安裝路徑。

  3. 然后使用下面的命令啟動或停止memcached服務:

c:\memcached\memcached.exe -d start
c:\memcached\memcached.exe -d stop

  4. 通過注冊表鍵值來修改memcached的配置項。在運行中輸入regedit.exe,然后導航到"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached"。修改其中的鍵值。例如你想增加memcached所使用的最大內存限制,可以修改ImagePath的值:

"c:\memcached\memcached.exe" -d runservice -m 512

* 除了參數'-m 512'之外,你還可以使用其它的參數。通過“c:\memcached\memcached.exe -h”可以查看所有能使用的參數。

  5. 如果要卸載memcached服務,可以使用下面的命令:

c:\memcached\memcached.exe -d uninstall

 安裝memcached >= 1.4.5

  1. 將下載的文件解壓到任意目錄。

  2. 1.4.5之后版本的memcached不能作為Windows服務來運行,必須使用Windows計划任務來運行它。要將memcached配置成當Windows啟動時自動運行,在命令行運行下面的命令:

schtasks /create /sc onstart /tn memcached /tr "'c:\memcached\memcached.exe' -m 512"

* 注意將路徑c:\memcached\memcached.exe替換成你本地的安裝路徑。

** 除了參數'-m 512'之外,你還可以使用其它的參數。通過“c:\memcached\memcached.exe -h”可以查看所有能使用的參數。

  3. 通過下面的命令將memcached從Windows計划任務中移除:

schtasks /delete /tn memcached

 

在PHP中使用memcached

  要在PHP中使用memcached,首先需要安裝memcache擴展包:

  1. 查看你本地的PHP擴展包目錄里是否有php_memcache.dll這個文件,如果沒有,從https://pecl.php.net/package/memcache下載(選擇windows dll文件),然后復制到PHP擴展包目錄里。

  2. 在php.ini中添加下面的代碼以啟用memcache擴展包:

extension=php_memcache.dll

  3. 創建下面的php示例代碼進行測試:

<?php

$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");

$version = $memcache->getVersion();
echo "Server's version: ".$version."<br/>\n";

$tmp_object = new stdClass;
$tmp_object->str_attr = 'test';
$tmp_object->int_attr = 123;

$memcache->set('key', $tmp_object, false, 10) or die ("Failed to save data at the server");
echo "Store data in the cache (data will expire in 10 seconds)<br/>\n";

$get_result = $memcache->get('key');
echo "Data from the cache:<br/>\n";

var_dump($get_result);

?> 

 

在Python中使用memcached

  要在Python中使用memcached,首先需要安裝memcached客戶端:

  1. 執行下面的命令進行memcached客戶端的安裝。第一個適用於Python 2.x,第二個適用於Python 3.x。

pip install python-memcached
pip install python3-memcached

  2. 創建下面的python示例代碼進行測試:

import memcache
mc = memcache.Client(['127.0.0.1:11211'], debug=0)
mc.set("some_key", "Some value")
value = mc.get("some_key")
mc.set("another_key", 3)
mc.delete("another_key")
mc.set("key", "1")   # note that the key used for incr/decr must be a string.
mc.incr("key")
mc.decr("key")

 

在Node.js中使用memcached

  在Node.js中可以通過memcached包來使用memcache,Github的地址https://github.com/3rd-Eden/memcached。下面是一段示例代碼:

var Memcached = require( 'memcached' );

// connect to our memcached server on host 10.211.55.5, port 11211
var memcached = new Memcached( "10.211.55.5:11211" );

memcached.set( "hello", 1, 10000, function( err, result ){
    if( err ) console.error( err );
    
    console.dir( result );
    memcached.end(); // as we are 100% certain we are not going to use the connection again, we are going to end it
});

memcached.get( "hello", function( err, result ){
    if( err ) console.error( err );
    
    console.dir( result );
    memcached.end(); // as we are 100% certain we are not going to use the connection again, we are going to end it
});

   更詳細的使用方法可以參考Github上的說明。

 

Memcached的數據統計

  要查看memcached的數據統計,可以通過telnet連接到memcached:

telnet 127.0.0.1 11211

* ip地址后面的數字為memcached運行的端口號

** 在Windows 10中telnet組件默認並沒有添加,可通過Control Panel > Programs and Features > Turn Windows features on or off來添加。

  然后使用stats來查看統計信息。下表列出了stats統計結果中各數據項的含義:

Name Type Meaning
pid 32u Process id of this server process
uptime 32u Number of secs since the server started
time 32u current UNIX time according to the server
version string Version string of this server
pointer_size 32 Default size of pointers on the host OS (generally 32 or 64)
rusage_user 32u.32u Accumulated user time for this process (seconds:microseconds)
rusage_system 32u.32u Accumulated system time for this process (seconds:microseconds)
curr_items 32u Current number of items stored
total_items 32u Total number of items stored since the server started
bytes 64u Current number of bytes used to store items
curr_connections 32u Number of open connections
total_connections 32u Total number of connections opened since the server started running
connection_structures 32u Number of connection structures allocated by the server
reserved_fds 32u Number of misc fds used internally
cmd_get 64u Cumulative number of retrieval reqs
cmd_set 64u Cumulative number of storage reqs
cmd_flush 64u Cumulative number of flush reqs
cmd_touch 64u Cumulative number of touch reqs
get_hits 64u Number of keys that have been requested and found present
get_misses 64u Number of items that have been requested and not found
delete_misses 64u Number of deletions reqs for missing keys
delete_hits 64u Number of deletion reqs resulting in an item being removed.
incr_misses 64u Number of incr reqs against missing keys.
incr_hits 64u Number of successful incr reqs.
decr_misses 64u Number of decr reqs against missing keys.
decr_hits 64u Number of successful decr reqs.
cas_misses 64u Number of CAS reqs against missing keys.
cas_hits 64u Number of successful CAS reqs.
cas_badval 64u Number of CAS reqs for which a key was found, but the CAS value did not match.
touch_hits 64u Numer of keys that have been touched with a new expiration time
touch_misses 64u Numer of items that have been touched and not found
auth_cmds 64u Number of authentication commands handled, success or failure.
auth_errors 64u Number of failed authentications.
evictions 64u Number of valid items removed from cache to free memory for new items
reclaimed 64u Number of times an entry was stored using memory from an expired entry
bytes_read 64u Total number of bytes read by this server from network
bytes_written 64u Total number of bytes sent by this server to network
limit_maxbytes 32u Number of bytes this server is allowed to use for storage.
threads 32u Number of worker threads requested. (see doc/threads.txt)
conn_yields 64u Number of times any connection yielded to another due to hitting the -R limit.
hash_power_level 32u Current size multiplier for hash table
hash_bytes 64u Bytes currently used by hash tables
hash_is_expanding bool Indicates if the hash table is being grown to a new size
expired_unfetched 64u Items pulled from LRU that were never touched by get/incr/append/etc before expiring
evicted_unfetched 64u Items evicted from LRU that were never touched by get/incr/append/etc.
slab_reassign_running bool If a slab page is being moved
slabs_moved 64u Total slab pages moved
crawler_reclaimed 64u Total items freed by LRU Crawler
lrutail_reflocked 64u Times LRU tail was found with active ref. Items moved to head to avoid OOM errors.

  更詳細的內容可以查看這里:https://github.com/memcached/memcached/blob/master/doc/protocol.txt

  另外,有關Memcached的常用命令及使用說明也可以參考這篇文章:http://www.cnblogs.com/jeffwongishandsome/archive/2011/11/06/2238265.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM