Memcached技術php
介紹:html
memcached是一種緩存技術, 他能夠把你的數據放入內存,從而經過內存訪問提速,由於內存最快的, memcached技術的主要目的提速,java
在memachec 中維護了一張大的hashtable表 ,該表是在內存,表的結構是mysql
key valuelinux
字串 (字串,數值,數組,對象,布爾,二進制數據,null)ajax
原理說明:redis
u 安裝並使用memcached算法
安裝步驟sql
(1) 下載memcached軟件數據庫
(2) 安裝
進入cmd ,切換到 memcached.exe 文件所在目錄
memcached.exe –d install
(3) 啓動memcached
第一種,能夠到服務點擊啓動
第二種, 命令行
memcached.exe –m 200MB –d start 【以deamon方式啓動,默認64M】
若是你在啓動時,win7啓動不成功, 則可使用以下方法
memcached.exe –p 端口號
啓動方法不要關閉控制檯.
端口號的範圍 : 0-65535 , 由於端口號是用兩個字節來表示
有名端口: 0-1024 已經用程序使用 , apache 80 , mysql 3306 , ftp 21 , ssh 22
oracle: 1521, stmp: 25
使用netstat –an 若是看到 11211端口在監聽,說明啓動ok
netstat –anb 是哪一個程序監聽, 這個指令還能夠看到有哪些用戶鏈接到咱們的服務器.
若是沒有安裝好,緣由可能
你切換成adminstrator , 去安裝,在啓動
(4) 準備研究若是對memcached進行curd操做.
看看telnet如何操做 (curd)
telnet 127.0.0.1 11211
若是大家不能使用telnet 是由於系統不存在 telnet.exe , 就能夠到其它機器上拷貝 telnet.exe 放在 c:\windows\system32 便可
基本語法是:
add key名 0 存放時間(秒) 數據大小(字符)
舉例:
add key1 0 30 5
基本語法是:
get key值
get key1
set key名 0 存放時間 數據大小.
舉例:
set key1 0 40 5
☞ 若是key1不存在,則至關於增長新,若是存在,則至關有替換
replace key名 存放時間 數據大小
replace key1 0 40 5
☞ 若是key1不存在,則失敗,這個指令要求key必須存在.
基本語法是
delete key名
好比
delete key1
append |
Append data to existing key |
append key 0 60 15 |
prepend |
Prepend data to existing key |
prepend key 0 60 15 |
flush_all 能夠統一把數據清空.
這裏主要你們能夠去計算出命中率 cmd_hits/cmd_get . 越高越好.
u 如何使用php程序操做咱們的memcached服務 curd.
步驟,準備工做.
(1) 把 php_memcache.dll 文件拷貝 php的ext 下
☞ 不一樣版本的php 所使用的 php_memcache.dll 的版本不同
(2) 修改php.ini文件,加載 php_memcache.dll (該文件就是封裝了一堆函數)
;加載php_memcache.dll 文件
extension=php_memcache.dll
(3) 從新啓動apache
(4) 咱們寫程序來完成curd操做.
細節: 在咱們添加數據的時候,若是
bool Memcache::add ( string $key , mixed $var [, int $flag [, int $expire ]] )
若是報 expire 設爲0 表示,永不過時.(只要memcache不從新啓動,就永遠在mem中)
exprie 直接給的是秒數,則最大 30*3600*24
若是你但願保持時間超過30 time()+天數*3600*24 便可
最後代碼:
mem1.php
<?php
//建立一個mem對象實例
$mem=new Memcache;
if(!$mem->connect("127.0.0.1",11211)){
die('鏈接失敗!');
}
//增長
//1.增長一個字串
/* if($mem->set('key1',"beijing",MEMCACHE_COMPRESSED,60)){
echo '添加ok';
}*/
//2.添加數值
/* if($mem->set('key1',100,MEMCACHE_COMPRESSED,60)){
echo '添加ok';
}*/
//3.添加數組
//在添加數組是,根據須要. 但願序列號放入 ,
//serialize<=>unserialize, 若是根據須要,也能夠json_encode <=> json_decode
$arr=array("bj",'tj');
if($mem->set('key1',$arr,MEMCACHE_COMPRESSED,time()+31*3600*24)){
echo '添加數組ok99111';
}
//4.添加對象
/* class Dog{
public $name;
public $age;
public function __construct($name,$age){
$this->name=$name;
$this->age=$age;
}
}
$dog1=new Dog('小狗',50);
if($mem->set('key1',$dog1,MEMCACHE_COMPRESSED,60)){
echo '添加對象ok';
}*/
//5.添加null 布爾值
/* if($mem->set('key1',false,MEMCACHE_COMPRESSED,60)){
echo '添加布爾ok';
}*/
//6. 資源類型放入.
/* $con=mysql_connect("127.0.0.1","root","root");
if(!$con){
die('鏈接數據庫失敗');
}
var_dump($con);
echo "<br/>";
if($mem->set('key1',$con,MEMCACHE_COMPRESSED,60)){
echo '添加資源ok';
}*/
//查詢
$val=$mem->get('key1');
var_dump($val);
//修改
//可使用replace
if($mem->replace("key11",'hello',MEMCACHE_COMPRESSED,60)){
echo 'replace ok';
}else{
echo 'replace no ok';
}
//刪除
echo "<br/>";
if($mem->delete('key14')){
echo 'key14 刪除';
}else{
echo 'key14不存在';
}
mem2.php
<?php
//這個文件去操做memcached服務
//建立一個mem對象實例
$mem=new Memcache;
if(!$mem->connect("127.0.0.1",11211)){
die('鏈接失敗!');
}
//在另外文件中取出對象時,有個注意的地方,對應php5.2這個版本會提示錯誤,
//對php5.3這個版本會提示 incomplete 信息, 解決方法是聲明類定義便可
class Dog{
public $name;
public $age;
public function __construct($name,$age){
$this->name=$name;
$this->age=$age;
}
}
$dog=$mem->get('key1');
var_dump($dog);
test.php 說明serilize 和 json_encode用法:
//何時使用serilize 何時使用json_encode [ajax配合]
練習: 請你們使用php 程序 memcache.dll 完成對memcahce增刪改查
20min
u 如何使用PHP源碼來操做memcached服務
若是管理員不讓咱們去加載 memcache.dll 文件,咱們能夠直接經過源碼操做.
關閉擴展.
代碼mem3.php
<?php
require_once 'memcached-client.php';
$mc = new memcached(array(
'servers' => array('127.0.0.1:11211'), //鏈接的memcacheip和端口
'debug' => false, //是否debug
'compress_threshold' => 10240, /*最大壓縮*/
'persistant' => true)); /*是不是持久鏈接*/
$mc->set('key1', array('some', 'array'));
// $mc->replace('key', 'some random string');
$val = $mc->get('key1');
var_dump($val);
//修改
$mc->replace('key1', "北京");
$val = $mc->get('key1');
var_dump($val);
//刪除
$mc->delete('key1');
$val = $mc->get('key1');
echo "刪除後";
var_dump($val);
u Memcached 機制的深刻了解
③ , memcache的數據是放入到內存,而且在數據爆滿的狀況下,使用LRU 算法刪除
寫段代碼說明: mem4.php
mem5.php 取出.
總結:
u memcache的細節討論
① 生命週期
從數據放入mem開始計時,直到時間到了,就銷燬, 若是時間爲0, 則表示不過時.
memcache的數據被銷燬的狀況以下:
② 如何把session數據放入到memcached服務中.
步驟:
以下:
;[sesson.save_handler 有user|files|memcache]
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"
③ 測試一把,重啓apache
測試ok
<?php
//傳統的代碼
session_start();
$_SESSION['name']='天龍八部300';
$_SESSION['city']='beijing';
class Dog{
public $name;
}
$dog1=new Dog;
$dog1->name='abcde';
$_SESSION['dog']=$dog1;
//若是session數據入mem,那他必定是以session_id爲
//key值進行添加
//取出
$name=$_SESSION['name'];
echo "name=$name";
echo "sessionid=".session_id();
u 思考,若是管理員,不讓咱們修改 php.ini 文件,咱們如何處理session入memcached這個功能, 咱們經過一個函數能夠去修改 php.ini 的配置.
代碼:
<?php
ini_set("session.save_handler","memcache");
ini_set("session.save_path","tcp://127.0.0.1:9999");
同時你也能夠經過 ini_set 去動態的修改對php.ini 的其它設置 。可是他不影響其它php頁面,也不會去修改php.ini 文件自己, 只對本頁面生效.
u memcached vs session比較
memcached 主要的目的是提速 ,所以它是一種無狀態的數據.即,數據不和用戶綁定.
session數據是和綁定的,所以是一種有狀態數據.
u memached安全性
如何使用memcached 服務纔是安全的.
在windows下經過啓用防火牆來保護咱們的memcached,原理圖:
在linux 也可使用防火牆.
setup 配置防火牆
iptables -a input -p tcp -s 127.0.0.1 -dport 11211 -j ACCEPT
u 什麼樣的數據適合放入memcached中?
和memcached技術相似是redis (key/value數據庫)
課後練習:
這個這個
這個練習主要是讓你們去練習crud的操做.
詳細講解:http://blog.csdn.net/pi9nc/article/details/17317231
初始化:memcache
static { String[] serverlist = { "server1.com:port", "server2.com:port" }; SockIOPool pool = SockIOPool.getInstance(); pool.setServers(serverlist); pool.initialize(); }
建立一個client對象:
MemCachedClient mc = new MemCachedClient();
建立一個緩存:
MemCachedClient mc = new MemCachedClient(); String key = "cacheKey1"; Object value = SomeClass.getObject(); mc.set(key, value);
經過key刪除一個緩存:
MemCachedClient mc = new MemCachedClient(); String key = "cacheKey1"; mc.delete(key);
經過key獲取緩存對象:
MemCachedClient mc = new MemCachedClient(); String key = "key"; Object value = mc.get(key);
獲取多個緩存對象:
MemCachedClient mc = new MemCachedClient(); String[] keys = { "key", "key1", "key2" }; Map<Object> values = mc.getMulti(keys);
刷新所有緩存:
MemCachedClient mc = new MemCachedClient(); mc.flushAll();
Memcached的java客戶端已經存在三種了:
? 官方提供的基於傳統阻塞io由Greg Whalin維護的客戶端
? Dustin Sallings實現的基於java nio的Spymemcached
? XMemcached
1. 三種API比較
1) memcached client for java
較早推出的memcached JAVA客戶端API,應用普遍,運行比較穩定。
A simple, asynchronous, single-threaded memcached client written in java. 支持異步,單線程的memcached客戶端,用到了java1.5版本的concurrent和nio,存取速度會高於前者,可是穩定性很差,測試中常報timeOut等相關異常。
XMemcached一樣是基於java nio的客戶端,java nio相比於傳統阻塞io模型來講,有效率高(特別在高併發下)和資源耗費相對較少的優勢。傳統阻塞IO爲了提升效率,須要建立必定數量的鏈接造成鏈接池,而nio僅須要一個鏈接便可(固然,nio也是能夠作池化處理),相對來講減小了線程建立和切換的開銷,這一點在高併發下特別明顯。所以XMemcached與Spymemcached在性能都很是優秀,在某些方面(存儲的數據比較小的狀況下)Xmemcached比Spymemcached的表現更爲優秀,具體能夠看這個Java Memcached Clients Benchmark。
因爲memcached client for java發佈了新版本,性能上有所提升,而且運行穩定,因此建議使用memcached client for java。
XMemcached也使用得比較普遍,並且有較詳細的中文API文檔,具備以下特色:高性能、支持完整的協議、支持客戶端分佈、容許設置節點權重、動態增刪節點、支持JMX、與Spring框架和Hibernate-memcached的集成、客戶端鏈接池、可擴展性好等。
下面給出這三種客戶端的示例程序。
3. 示例程序
1) memcached client for java
從前面介紹的Java環境的Memcached客戶端程序項目網址裏,下載最新版的客戶端程序包:java_memcached-release_2.5.1.zip,解壓後,文件夾裏找到java_memcached-release_2.5.1.jar,這個就是客戶端的JAR包。將此JAR包添加到項目的構建路徑裏,則項目中,就可使用Memcached了。
示例代碼以下:
package temp; import com.danga.MemCached.*; import org.apache.log4j.*; public class CacheTest { public static void main(String[] args) { /** * 初始化SockIOPool,管理memcached的鏈接池 * */ String[] servers = { "10.11.15.222:10000" }; SockIOPool pool = SockIOPool.getInstance(); pool.setServers(servers); pool.setFailover(true); pool.setInitConn(10); pool.setMinConn(5); pool.setMaxConn(250); pool.setMaintSleep(30); pool.setNagle(false); pool.setSocketTO(3000); pool.setAliveCheck(true); pool.initialize(); /** * 創建MemcachedClient實例 * */ MemCachedClient memCachedClient = new MemCachedClient(); for (int i = 0; i < 1000; i++) { /** * 將對象加入到memcached緩存 * */ boolean success = memCachedClient.set("" + i, "Hello!"); /** * 從memcached緩存中按key值取對象 * */ String result = (String) memCachedClient.get("" + i); System.out.println(String.format("set( %d ): %s", i, success)); System.out.println(String.format("get( %d ): %s", i, result)); } } }
spymemcached當前版本是2.5版本,官方網址是:http://code.google.com/p/spymemcached/。能夠從地址:http://spymemcached.googlecode.com/files/memcached-2.5.jar下載最新版原本使用。
示例代碼以下:
package temp; import java.net.InetSocketAddress; import java.util.concurrent.Future; import net.spy.memcached.MemcachedClient; public class TestSpyMemcache { public static void main(String[] args) { // 保存對象 try { /* 創建MemcachedClient 實例,並指定memcached服務的IP地址和端口號 */ MemcachedClient mc = new MemcachedClient(new InetSocketAddress("10.11.15.222", 10000)); Future<Boolean> b = null; /* 將key值,過時時間(秒)和要緩存的對象set到memcached中 */ b = mc.set("neea:testDaF:ksIdno", 900, "someObject"); if (b.get().booleanValue() == true) { mc.shutdown(); } } catch (Exception ex) { ex.printStackTrace(); } // 取得對象 try { /* 創建MemcachedClient 實例,並指定memcached服務的IP地址和端口號 */ MemcachedClient mc = new MemcachedClient(new InetSocketAddress("10.11.15.222", 10000)); /* 按照key值從memcached中查找緩存,不存在則返回null */ Object b = mc.get("neea:testDaF:ksIdno"); System.out.println(b.toString()); mc.shutdown(); } catch (Exception ex) { ex.printStackTrace(); } } }
Xmemcached的官方網址是:http://code.google.com/p/xmemcached/,能夠從其官網上下載最新版本的1.2.4來使用。地址是:http://xmemcached.googlecode.com/files/xmemcached-1.2.4-src.tar.gz。
示例代碼以下:
package temp; import java.io.IOException; import java.util.concurrent.TimeoutException; import net.rubyeye.xmemcached.utils.AddrUtil; import net.rubyeye.xmemcached.MemcachedClient; import net.rubyeye.xmemcached.MemcachedClientBuilder; import net.rubyeye.xmemcached.XMemcachedClientBuilder; import net.rubyeye.xmemcached.exception.MemcachedException; public class TestXMemcache { public static void main(String[] args) { MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil .getAddresses("10.11.15.222:10000")); MemcachedClient memcachedClient; try { memcachedClient = builder.build(); memcachedClient.set("hello", 0, "Hello,xmemcached"); String value = memcachedClient.get("hello"); System.out.println("hello=" + value); memcachedClient.delete("hello"); value = memcachedClient.get("hello"); System.out.println("hello=" + value); // close memcached client memcachedClient.shutdown(); } catch (MemcachedException e) { System.err.println("MemcachedClient operation fail"); e.printStackTrace(); } catch (TimeoutException e) { System.err.println("MemcachedClient operation timeout"); e.printStackTrace(); } catch (InterruptedException e) { // ignore }catch (IOException e) { System.err.println("Shutdown MemcachedClient fail"); e.printStackTrace(); } } }
(八) 64位機器安裝Memcache
1. 安裝
在64位的機器上安裝Memcache和在32位的機器上安裝的操做是同樣的。在安裝的過程當中,可使用以下的命令來查看安裝是否成功,以進行確認。
1) 確認libevent安裝
查看libevent是否安裝成功:
# ls -al /usr/lib | grep libevent
在命令行出現以下信息,代表安裝成功:
lrwxrwxrwx 1 root root 21 Mar 22 18:41 libevent-1.2.so.1 -> libevent-1.2.so.1.0.3
-rwxr-xr-x 1 root root 262475 Mar 22 18:41 libevent-1.2.so.1.0.3
-rw-r--r-- 1 root root 430228 Mar 22 18:41 libevent.a
-rwxr-xr-x 1 root root 811 Mar 22 18:41 libevent.la
lrwxrwxrwx 1 root root 21 Mar 22 18:41 libevent.so -> libevent-1.2.so.1.0.3
2) 確認memcache安裝
查看memcache是否安裝成功:
# ls -al /usr /bin/mem*
在命令行出現以下信息,代表安裝成功:
-rwxr-xr-x 1 root root 114673 Mar 22 18:52 /usr/local/src/memcached
-rwxr-xr-x 1 root root 120092 Mar 22 18:52 /usr/local/src/memcached-debug
2. 64位的問題及修復
1) 問題
安裝完成了,如今咱們看一下memcache的幫助:
#/usr/local/src/memecached -h
這時候出現了以下錯誤:
memcached: error while loading shared libraries: libevent-1.2.so.1: cannot open shared object file: No such file or directory
2) 修復
下面說下修復過程:
#LD_DEBUG=libs memcached -v #查看memcached的libs的路徑
在命令上出現了以下信息:
5427: find library=libevent-1.2.so.1 [0]; searching
5427: search cache=/etc/ld.so.cache
5427: search path=/lib64/tls/x86_64:/lib64/tls:/lib64/x86_64:/lib64:/usr/lib64/tls/x86_64:/usr/lib64/tls:/usr/lib64/x86_64:
/usr/lib64 (system search path)
5427: trying file=/lib64/tls/x86_64/libevent-1.2.so.1
5427: trying file=/lib64/tls/libevent-1.2.so.1
5427: trying file=/lib64/x86_64/libevent-1.2.so.1
5427: trying file=/lib64/libevent-1.2.so.1
5427: trying file=/usr/lib64/tls/x86_64/libevent-1.2.so.1
5427: trying file=/usr/lib64/tls/libevent-1.2.so.1
5427: trying file=/usr/lib64/x86_64/libevent-1.2.so.1
5427: trying file=/usr/lib64/libevent-1.2.so.1
5427: memcached: error while loading shared libraries: libevent-1.2.so.1: cannot open shared object file: No such file or directory
如今應該記錄下來libs的位置,我選擇的是trying file=/usr/lib64/libevent-1.2.so.1,如今咱們利用這個來作個符號連接:
# ln -s /usr/lib/libevent-1.4.so.2 /usr/lib64/libevent-1.4.so.2
下面咱們繼續使用memcached -h作下測試,終於出現了以下信息:
memcached 1.2.0
-p <num> port number to listen on
-s <file> unix socket path to listen on (disables network support)
-l <ip_addr> interface to listen on, default is INDRR_ANY
-d run as a daemon
-r maximize core file limit
-u <username> assume identity of <username> (only when run as root)
-m <num> max memory to use for items in megabytes, default is 64 MB
-M return error on memory exhausted (rather than removing items)
-c <num> max simultaneous connections, default is 1024
-k lock down all paged memory
-v verbose (print errors/warnings while in event loop)
-vv very verbose (also print client commands/reponses)
-h print this help and exit
-i print memcached and libevent license
-b run a managed instanced (mnemonic: buckets)
-P <file> save PID in <file>, only used with -d option
-f <factor> chunk size growth factor, default 1.25
-n <bytes> minimum space allocated for key+value+flags, default 48
說明memcached安裝成功。(應該是機器是64位的緣由,因此將so文件放到了lib64下面,而不是lib下面,使得memcached找不到了so文件)。
下面,咱們來啓動一個Memcached的服務器端:
# /usr/local/src/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid
在這裏簡單介紹一下Windows下的Memcache的安裝:
1. 下載memcache的windows穩定版,解壓放某個盤下面,好比在c:\memcached
2. 在終端(也即cmd命令界面)下輸入‘c:\memcached\memcached.exe -d install’安裝
3. 再輸入:‘c:\memcached\memcached.exe -d start’啓動。NOTE: 之後memcached將做爲windows的一個服務每次開機時自動啓動。這樣服務器端已經安裝完畢了。
? -p 監聽的端口
? -l 鏈接的IP地址, 默認是本機
? -d start 啓動memcached服務
? -d restart 重起memcached服務
? -d stop|shutdown 關閉正在運行的memcached服務
? -d install 安裝memcached服務
? -d uninstall 卸載memcached服務
? -u 以的身份運行 (僅在以root運行的時候有效)
? -m 最大內存使用,單位MB。默認64MB
? -M 內存耗盡時返回錯誤,而不是刪除項
? -c 最大同時鏈接數,默認是1024
? -f 塊大小增加因子,默認是1.25
? -n 最小分配空間,key+value+flags默認是48
? -h 顯示幫助
3. 設置Memcache緩存大小和端口
Memcache的默認啓動時的參數可能不知足實際生產環境的須要,因而就想到直接修改windows服務的啓動參數,操做以下:
打開註冊表,找到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server
其中的ImagePath項的值爲: c:\memcached\memcached.exe" -d runservice
改爲:c:\memcached\memcached.exe" -p 12345 -m 128 -d runservice
其中,-p就是端口,-m就是緩存大小,以M爲單位。
一、因爲memcached是基於libevent的,所以須要安裝libevent,libevent-devel
二、下載並解壓memcached-1.4.5
memcached官方網站是:http://memcached.org/
三、編譯安裝memcached-1.4.5
四、配置環境變量
進入用戶宿主目錄,編輯.bash_profile,爲系統環境變量LD_LIBRARY_PATH增長新的目錄,須要增長的內容以下:
# vi .bash_profile
刷新用戶環境變量:# source .bash_profile
五、編寫memcached服務啓停腳本
# cd /etc/init.d
vi memcached,腳本內容以下:
#!/bin/sh # # Startup script for the server of memcached # # processname: memcached # pidfile: /etc/memcached/memcached.pid # logfile: /etc/memcached/memcached_log.txt # memcached_home: /etc/memcached # chkconfig: 35 21 79 # description: Start and stop memcached Service # Source function library . /etc/rc.d/init.d/functions RETVAL=0 prog="memcached" basedir=/etc/memcached cmd=${basedir}/bin/memcached pidfile="$basedir/${prog}.pid" #logfile="$basedir/memcached_log.txt" # 設置memcached啓動參數 ipaddr="192.168.1.201" # 綁定偵聽的IP地址 port="11211" # 服務端口 username="root" # 運行程序的用戶身份 max_memory=64 # default: 64M | 最大使用內存 max_simul_conn=1024 # default: 1024 | 最大同時鏈接數 #maxcon=51200 #growth_factor=1.3 # default: 1.25 | 塊大小增加因子 #thread_num=6 # default: 4 #verbose="-vv" # 查看詳細啓動信息 #bind_protocol=binary # ascii, binary, or auto (default) start() { echo -n $"Starting service: $prog" $cmd -d -m $max_memory -u $username -l $ipaddr -p $port -c $max_simul_conn -P $pidfile RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog } stop() { echo -n $"Stopping service: $prog " run_user=`whoami` pidlist=`ps -ef | grep $run_user | grep memcached | grep -v grep | awk '{print($2)}'` for pid in $pidlist do # echo "pid=$pid" kill -9 $pid if [ $? -ne 0 ]; then return 1 fi done RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog } # See how we were called. case "$1" in start) start ;; stop) stop ;; #reload) # reload # ;; restart) stop start ;; #condrestart) # if [ -f /var/lock/subsys/$prog ]; then # stop # start # fi # ;; status) status memcached ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 esac exit $RETVAL
設置腳本可被執行:# chmod +x memcached
六、設置memcached隨系統啓動
# chkconfig --add memcached # chkconfig --level 35 memcached on
# service memcached start //啓動的時候其實是調用了下面的這個命令,以守護進程的方式來啓動memcached /etc/memcached/bin/memcached -d -m 64 -u root -l 192.168.1.201 \-p 11211 -c 1024 -P /etc/memcached/memcached.pid
查看memcached是否啓動:
# ps -ef | grep memcached
參數 | 參數解釋及說明 |
-p <num> | 監聽的端口 |
-l <ip_addr> | 鏈接的IP地址,,默認是本機。-l選項能夠不使用,此時表示在全部網絡接口地址上監聽。建議是-l <ip_addr>指定一個內部網絡IP地址,以免成爲外部網絡攻擊的對象 |
-d start | 啓動memcached 服務 |
-d restart | 重起memcached 服務 |
-d stop|shutdown | 關閉正在運行的memcached 服務 |
-d install | 安裝memcached 服務 |
-d uninstall | 卸載memcached 服務 |
-u <username> | 以<username>的身份運行 (僅在以root運行的時候有效) |
-m <num> | 最大內存使用,單位MB。默認64MB |
-M | 內存耗盡時返回錯誤,而不是刪除項 |
-c <num> | 最大同時鏈接數,默認是1024 |
-f <factor> | 塊大小增加因子,默認是1.25 |
-n <bytes> | 最小分配空間,key+value+flags默認是48 |
-h | 顯示幫助 |