Linux下的Memcache安裝

轉載:php

http://www.ccvita.com/257.htmlhtml

最近在研究怎麼讓Discuz!去應用Memcache去作一些事情,記錄下Memcache安裝的過程。linux

Linux下Memcache服務器端的安裝
服務器端主要是安裝memcache服務器端,目前的最新版本是 memcached-1.3.0 。
下載:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz
另外,Memcache用到了libevent這個庫用於Socket的處理,因此還須要安裝libevent,libevent的最新版本是libevent-1.3。(若是你的系統已經安裝了libevent,能夠不用安裝)
官網:http://www.monkey.org/~provos/libevent/
下載:http://www.monkey.org/~provos/libevent-1.3.tar.gzredis

用wget指令直接下載這兩個東西.下載回源文件後。
1.先安裝libevent。這個東西在配置時須要指定一個安裝路徑,即./configure --prefix=/usr;而後make;而後make install;
2.再安裝memcached,只是須要在配置時須要指定libevent的安裝路徑即./configure --with-libevent=/usr;而後make;而後make install;
這樣就完成了Linux下Memcache服務器端的安裝。詳細的方法以下:

sql

1.分別把memcached和libevent下載回來,放到 /tmp 目錄下:
# cd /tmp
# wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz
# wget http://www.monkey.org/~provos/libevent-1.2.tar.gzapache

2.先安裝libevent:
# tar zxvf libevent-1.2.tar.gz
# cd libevent-1.2
# ./configure --prefix=/usr
# make
# make install緩存

3.測試libevent是否安裝成功:
# ls -al /usr/lib | grep libevent
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent-1.2.so.1 -> libevent-1.2.so.1.0.3
-rwxr-xr-x 1 root root 263546 11?? 12 17:38 libevent-1.2.so.1.0.3
-rw-r--r-- 1 root root 454156 11?? 12 17:38 libevent.a
-rwxr-xr-x 1 root root 811 11?? 12 17:38 libevent.la
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent.so -> libevent-1.2.so.1.0.3
還不錯,都安裝上了。服務器

4.安裝memcached,同時須要安裝中指定libevent的安裝位置:
# cd /tmp
# tar zxvf memcached-1.2.0.tar.gz
# cd memcached-1.2.0
# ./configure --with-libevent=/usr
# make
# make install
若是中間出現報錯,請仔細檢查錯誤信息,按照錯誤信息來配置或者增長相應的庫或者路徑。
安裝完成後會把memcached放到 /usr/local/bin/memcached ,session

5.測試是否成功安裝memcached:
# ls -al /usr/local/bin/mem*
-rwxr-xr-x 1 root root 137986 11?? 12 17:39 /usr/local/bin/memcached
-rwxr-xr-x 1 root root 140179 11?? 12 17:39 /usr/local/bin/memcached-debug架構

安裝Memcache的PHP擴展
1.在http://pecl.php.net/package/memcache 選擇相應想要下載的memcache版本。
2.安裝PHP的memcache擴展

tar vxzf memcache-2.2.1.tgz
cd memcache-2.2.1
/usr/local/php/bin/phpize
./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir
make
make install


3.上述安裝完後會有相似這樣的提示:

Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/


4.把php.ini中的extension_dir = "./"修改成

extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/"


5.添加一行來載入memcache擴展:extension=memcache.so

 

memcached的基本設置
1.啓動Memcache的服務器端:
# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid

-d選項是啓動一個守護進程,
-m是分配給Memcache使用的內存數量,單位是MB,我這裏是10MB,
-u是運行Memcache的用戶,我這裏是root,
-l是監聽的服務器IP地址,若是有多個地址的話,我這裏指定了服務器的IP地址192.168.0.200,
-p是設置Memcache監聽的端口,我這裏設置了12000,最好是1024以上的端口,
-c選項是最大運行的併發鏈接數,默認是1024,我這裏設置了256,按照你服務器的負載量來設定,
-P是設置保存Memcache的pid文件,我這裏是保存在 /tmp/memcached.pid,

2.若是要結束Memcache進程,執行:

# kill `cat /tmp/memcached.pid`


也能夠啓動多個守護進程,不過端口不能重複。

 

3.重啓apache,service httpd restart

Memcache環境測試
運行下面的php文件,若是有輸出This is a test!,就表示環境搭建成功。開始領略Memcache的魅力把!
< ?php
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211);
$mem->set('key', 'This is a test!', 0, 60);
$val = $mem->get('key');
echo $val;
?>

參考資料
對Memcached有疑問的朋友能夠參考下列文章:
Linux下的Memcache安裝:http://www.ccvita.com/257.html
Windows下的Memcache安裝:http://www.ccvita.com/258.html
Memcache基礎教程:http://www.ccvita.com/259.html
Discuz!的Memcache緩存實現:http://www.ccvita.com/261.html
Memcache協議中文版:http://www.ccvita.com/306.html
Memcache分佈式部署方案:http://www.ccvita.com/395.html

Tags: Linux, Memcache

 

錯誤問題解決:

memcached: error while loading shared libraries: libevent-2.0.so.5: cannot o

http://blog.csdn.net/keda8997110/article/details/8767606

memcached基本選項

-p 端口   監聽tcp端口
-d    以守護進程方式運行memcached
-u username  以username運行
-m 《num》  最大的內存使用,單位是MB ,缺省是64MB
-c <num>  軟鏈接數量,缺省是1024
-v    輸出警告和錯誤信息
-vv   打印客戶端的請求和返回信息

檢查memcached是否正常運行
#ps aux | grep memcached

#telnet localhost 11211
....
stats
...
會顯示memcached的基本信息

 

若是啓動時出現「memcached: error while loading shared libraries:libevent-2.0.so.5: cannot

open shared object file: No such file or directory」之類的信息,表示memcached 找不到

libevent 的位置
因此,請先使用whereis libevent 獲得位置,而後鏈接到memcached 所尋找的路徑
首先查看,libevent 在哪裏
# whereis libevent
libevent: /usr/local/lib/libevent.la /usr/local/lib/libevent.so /usr/local/lib/libevent.a
而後,再看memcached 從哪裏找它
# LD_DEBUG=libs memcached -v 2>&1 > /dev/null | less
能夠看到:是/usr/lib/libevent-2.0.so.5,因此,建立軟鏈
[root@localhost tools]# ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5
再次啓動

 

關閉memcached :pkill memcached

 

經過telnet鏈接查看memcache服務器

http://blog.csdn.net/clh604/article/details/16342755

 

memcache做爲一款優秀的進程外緩存,經常被運用於高併發系統架構中。這裏主要談談怎麼經過telnet工具,查看memcache運行情況並對其key進行管理維護。假設memcache安裝目錄:/usr/local/memcached

          
一、啓動memcache

[plain]  view plain copy
 
 
  1. [root@localhost ~]# /usr/local/memcached/bin/memcached -d -m 512  -u root -l 192.168.119.70 -p 12000 -c 512 -P /usr/local/memcached/memcached.pid  

啓動參數詳解
 -d:以守護進程方式啓動。若是該參數沒有指定,當按ctrl+c命令結束,memcache自動關閉
 -m:分配給memcache使用的最大內存數 單位是m,默認是64m
 -u: 指定運行memcache的用戶
 -l: 指定監聽的ip地址
 -p: 指定監聽的tcp端口號,能夠經過-u指定udp端口.默認是11211
 -c: 最大併發鏈接數
 -P: 報錯進程id的文件
 memcache 啓動以後,咱們就能夠經過telnet鏈接memcache,對其進行簡單操做管理。

二、telnet鏈接memcache

[plain]  view plain copy
 
 
  1. [root@localhost ~]# telnet 192.168.119.70 12000   
  2. Trying 192.168.119.70...  
  3. Connected to 192.168.119.70 (192.168.119.70).  
  4. Escape character is '^]'.   

 鏈接成功以後,便可對memcache進行操做管理了,經常使用的命令有:

Ⅰ、添加修改

        命令格式:<command> <key> <flags> <exptime> <bytes>\r\n<data block>\r\n

       <command>:add, set或 replace

       <key> :緩存的名字

       <flag>:16位無符號整數,和key要存儲的數據一塊兒存儲,並在程序get緩存時,返回。

      <exptime>:過去時間,0 表示永遠不過時,若是非零,表示unix時間或距此秒數

       <bytes>:存儲數據的字節數

        \r\n: 表示換行回車

        命令結果:

                STORED :表示成功

                NOT_STORED : 表示失敗 

a)、添加緩存

[plain]  view plain copy
 
 
  1. add id 1 0 4  
  2. 1234  
  3. STORED  

         若是key已經存在,則會添加失敗。

b)、修改緩存

[plain]  view plain copy
 
 
  1. replace id 1 0 4  
  2. 3456  
  3. STORED  

     key存在時,成功;不存在時,失敗。

c)、設置緩存

[plain]  view plain copy
 
 
  1. set id 1 0 4  
  2. 2345  
  3. STORED  

    key不存在時,添加【add】;已存在時,替換【replace】。

 

Ⅱ、讀取

       命令格式:get <key>+\r\n

       <key>+:表示一個或多個key,多個key時,用空格隔開

a)、讀取單個key的緩存

[plain]  view plain copy
 
 
  1. get id  
  2. VALUE id 1 4  
  3. 1234  
  4. END  

 

 b)、讀取多個key的緩存

[plain]  view plain copy
 
 
  1. get id name  
  2. VALUE id 1 4  
  3. 3456  
  4. VALUE name 1 3  
  5. jim  
  6. END  

 

Ⅲ、刪除

命令格式:delete <key> \r\n

<key>:要刪除的key

刪除id

[plain]  view plain copy
 
 
  1. delete id   
  2. DELETED  

 

Ⅳ、清空全部緩存

命令格式:flush_all

[plain]  view plain copy
 
 
  1. flush_all  
  2. OK  

 

Ⅴ、查看緩存服務器狀態

命令:stats

[plain]  view plain copy
 
 
  1. stats  
  2. STAT pid 2711     //進程id  
  3. STAT uptime 2453  //總的運行時間,單位描述  
  4. STAT time 1344856333  //當前時間  
  5. STAT version 1.4.0 //版本  
  6. STAT pointer_size 32    //服務器指針位數,通常32位操做系統是32  
  7. STAT rusage_user 0.002999  //進程的累計用戶時間   
  8. STAT rusage_system 1.277805  //進程的累計系統事件  
  9. STAT curr_connections 1  //當前鏈接數  
  10. STAT total_connections 11  //服務器啓動後,總鏈接數  
  11. STAT connection_structures 11  //鏈接結構的數量  
  12. STAT cmd_get 17   //總獲取次數  
  13. STAT cmd_set 1  //總寫入次數  
  14. STAT cmd_flush 1   //總的的清空次數  
  15. STAT get_hits 1  //總的命中次數  
  16. STAT get_misses 7   //獲取沒有命中次數  
  17. STAT delete_misses //刪除沒有命中次數  
  18. STAT delete_hits 4   //刪除命中次數  
  19. STAT incr_misses //遞增操做沒有命中次數   
  20. STAT incr_hits //遞增操做命中次數  
  21. STAT decr_misses //遞減操做沒有命中的次數  
  22. STAT decr_hits //遞減操做命中的次數  
  23. STAT cas_misses //cas設置沒有命中次數  
  24. STAT cas_hits //cas命中次數  
  25. STAT cas_badval //cas操做找到key,但版本過時,沒有設置成功  
  26. STAT bytes_read 455    //總共獲取數據量  
  27. STAT bytes_written 1175  //總共寫入數據量  
  28. STAT limit_maxbytes 1048576  //最大容許使用內存,單位字節  
  29. STAT accepting_conns 1      
  30. STAT listen_disabled_num 0  
  31. STAT threads 5   //當前線程數  
  32. STAT conn_yields 0  
  33. STAT bytes 56      //已用緩存空間  
  34. STAT curr_items 1  //當前緩存的keyvalue數  
  35. STAT total_items 7 //總共緩存的keyvalue數,包括過時刪除的  
  36. STAT evictions //經過刪除keyvalue,釋放內存次數  
  37. END  

Ⅵ、打印版本

命令:version

[plain]  view plain copy
 
 
  1. version  
  2. VERSION 1.4.0  

Ⅶ、打印內存信息

命令:stats slabs

[plain]  view plain copy
 
 
  1. stats slabs  
  2. STAT 1:chunk_size 80  
  3. STAT 1:chunks_per_page 13107  
  4. STAT 1:total_pages 1  
  5. STAT 1:total_chunks 13107  
  6. STAT 1:used_chunks 1  
  7. STAT 1:free_chunks 1  
  8. STAT 1:free_chunks_end 13105  
  9. STAT 1:get_hits 10  
  10. STAT 1:cmd_set 10  
  11. STAT 1:delete_hits 4  
  12. STAT 1:incr_hits 0  
  13. STAT 1:decr_hits 0  
  14. STAT 1:cas_hits 0  
  15. STAT 1:cas_badval 0  
  16. STAT active_slabs 1  
  17. STAT total_malloced 1048560  
  18. END  

 

三、退出telnet 

[plain]  view plain copy
 
 
  1. quit  
 
0

CentOS安裝telnet

http://jingyan.baidu.com/article/3c48dd34709e70e10be35835.html

電腦軟件

名稱:CentOS telnet
大小:10MB|類別:音頻媒體|語言:中文
應用平臺:Linux-CentOS

1.檢查linux版本

    cat /etc/issue

2.檢查是否已經安裝telnet

    rpm -qa | grep telnet

    上面的顯示是已經安裝,就不須要再安裝了,若是沒有,接着下一步吧。

3.安裝telnet及telnet-server,注意,須要root權限來安裝。

    yum install telnet

    yum install telnet-server

    等待一會會提示是否安裝,輸入y而後回車,一會就裝好了。

4.由於裝好telnet服務以後,默認是不開啓服務的,下面咱們須要修改文件來開啓服務。

    vi /etc/xinetd.d/telnet

    修改 disable = yes 爲 disable = no 

    :wq!存儲——別告訴我你不懂的用vi...若是真的這樣,推薦你再看看個人安裝使用vi的經驗!

5.須要激活xinetd服務

    service xinetd restart

    我在使用中第一次有提示錯誤,第二次運行就沒事了:)

6.須要測試telnet是否成功開啓

    telnet localhost

    若是前面的操做都沒問題,輸入用戶名密碼能登陸成功。

7.當你使用其餘機器遠程telnet的時候,若是不成功,那麼頗有多是防火牆的問題,下面咱們來修改防火牆的設置

    首先,使用netstat –tunlp查看是否23端口被防火牆封掉了:

    

    再使用iptables修改設置,使用service iptables save保存設置,而後service iptables restart重啓防火牆。搞定!

 

祝你好運!

 

Memcache 查看列出全部key方法

http://www.ttlsa.com/memcache/memcache-list-all-keys/

今天在作一個Memcache的session測試,可是在測試的過程當中,發現Memcache沒有一個比較簡單的方法能夠直接象redis那樣keys *列出全部的Session key,並根據key get對應的session內容,因而,我開始查找資料,翻出來的大部分是一些memcache經常使用命令等,可是對列出key的辦法,講解卻很少,因而來到google,找到了一個國外的資料

 

具體的內容我套用個人測試環境中,操做以下

1. cmd上登陸memcache

 

 

2. 列出全部keys

 

 

3. 經過itemid獲取key

接下來基於列出的items id,本例中爲7,第2個參數爲列出的長度,0爲所有列出

 

4. 經過get獲取key值

上面的stats cachedump命令列出了個人session key,接下來就用get命令查找對應的session值

 

5. 參考地址

參考地址:http://www.darkcoding.net/software/memcached-list-all-keys/

相關文章
相關標籤/搜索