1.下載包html
1.1.到http://memcached.org/下載linux下的memcached的安裝包.java
1.2.到http://libevent.org/ 下載安裝memcached前比須要的包libevent-2.0.22我安裝的是這個版本.linux
2.安裝libevent-2.0.22shell
[root@hnxz-vm-dg-s1 ~]# tar -zxvf libevent-2.0.22-stable.tar.gz [root@hnxz-vm-dg-s1 ~]# cd libevent-2.0.22-stable [root@hnxz-vm-dg-s1 libevent-2.0.22-stable]# pwd /root/libevent-2.0.22-stable [root@hnxz-vm-dg-s1 libevent-2.0.22-stable]# ./configure --prefix=/usr/local/libevent [root@hnxz-vm-dg-s1 libevent-2.0.22-stable]# make && make install
3.安裝memcached數據庫
[root@hnxz-vm-dg-s1 ~]# tar -zxvf memcached-1.4.25.tar.gz [root@hnxz-vm-dg-s1 ~]# cd memcached-1.4.25 [root@hnxz-vm-dg-s1 memcached-1.4.25]# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent --enable-64bit [root@hnxz-vm-dg-s1 memcached-1.4.25]# make && make install
--with-libevent=??? 此路徑可使用命令查找lib位置後端
whereis libevent
4.測試是否成功安裝memcached:緩存
[root@hnxz-vm-dg-s1 memcached-1.4.25]# ls -al /usr/local/memcached/bin/ total 360 drwxr-xr-x 2 root root 4096 Jan 13 17:24 . drwxr-xr-x 5 root root 4096 Jan 13 17:24 .. -rwxr-xr-x 1 root root 360434 Jan 13 17:24 memcached [root@hnxz-vm-dg-s1 memcached-1.4.25]#
成功的話,會輸出memcached 可執行程序服務器
5.啓動memcached併發
[root@hnxz-vm-dg-s1 bin]# ll total 352 -rwxr-xr-x 1 root root 360434 Jan 13 17:24 memcached [root@hnxz-vm-dg-s1 bin]# ./memcached -d -m 246 -l 10.207.238.61 -p 11211 -u root
若是中間出現報錯,請仔細檢查錯誤信息,按照錯誤信息來配置或者增長相應的庫或者路徑。less
我在啓動過程當中報這個錯誤找不到lib包,錯誤以下:
memcached: error while loading shared libraries: libevent-2.0.so.5: cannot
使用命令,便可查看缺失的lib包位置以及錯誤的詳細信息;
LD_DEBUG=libs ./memcached -v 2>&1 > /dev/null | less
[root@hnxz-vm-dg-s1 bin]# ll total 352 -rwxr-xr-x 1 root root 360434 Jan 13 17:24 memcached [root@hnxz-vm-dg-s1 bin]# LD_DEBUG=libs ./memcached -v 2>&1 > /dev/null | less [root@hnxz-vm-dg-s1 bin]#
最終確認爲找不到libevent-2.0.so.5 使用ln -s軟鏈接一個
ln -s /usr/local/lib/libevent.so /usr/lib64/libevent-2.0.so.5
6.給出memcached啓動命令參數詳解.
-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, -p 使用的TCP端口。默認爲11211 -m 最大內存大小。默認爲64M -vv 用very vrebose模式啓動,調試信息和錯誤輸出到控制檯 -d 做爲daemon在後臺啓動
若是要結束Memcache進程,執行:
# kill `cat /tmp/memcached.pid`
或是 經過ps -ef | grep memcached 找到pid ,而後kill
也能夠啓動多個守護進程,不過端口不能重複。
# ps -ef | grep memcached
root 28914 1 0 07:27 ? 00:00:00 memcached -d -m 128 -l localhost -p 11211 -u root (啓動ok)
6.測試memcached
#telnet localhost 11211
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
對memecached的管理能夠參考這篇文章http://www.blogjava.net/hao446tian/archive/2012/04/11/373773.html
經常使用指令:
stats
memcached的做者給咱們提供查看運行狀況的命令。主要是「stats」,使用方法爲 「telnet ip 端口號」,登陸後使用「stats」命令。
如下是引用片斷:
pid = process id uptime = number of seconds since the process was started time = current time version = memcached version rusage_user = seconds the cpu has devoted to the process as the user rusage_system = seconds the cpu has devoted to the process as the system curr_items = total number of items currently in memcache total_items = total number of items that have passed through the cache bytes = total number of bytes currently in use by curr_items curr_connections = total number of open connections to memcached connection_structures = ??? cmd_get = total GET commands issued to the server cmd_set = total SET commands issued to the server get_hits = total number of times a GET command was able to retrieve and return data get_misses = total number of times a GET command was unable to retrieve and return data bytes_read = total number of bytes input into the server bytes_written = total number of bytes written by the server limit_maxbytes = total storage bytes available to the server.
着重說一下幾個對觀測頗有用的項。 limit_maxbytes、bytes memcached在存儲的時候是能夠設置失效時間的,但若是存儲已經滿了,那舊數據即便沒有到過時時間,也會被移除。因此須要觀察memcached存儲是否已經滿了,同時這對擴容也是有意義的參考。limit_maxbytes即總的存儲大小,而bytes 就是已經使用的大小,從這兩個數據就能夠看出在memcached啓動時,咱們爲它分配的內存是否足夠使用。 cmd_get、cmd_set memcached啓動後,咱們對它一共作了多少次讀取操做呢?從這兩個參數能夠觀察出來。 get_hits、get_misses 使用memcached後,咱們須要評估咱們使用的策略是否合理。不可以使用中間緩存後,後端的數據庫仍是有較大的訪問量,這樣的話中間緩存就變得沒有意義了。get_hits表示命中了多少次讀取,即來memcached取到了多少有效數據;get_m isses表示沒有命中的次數,即這次來取數據的時候,memcached並無你所查詢的數據。若是沒有清零統計數據的話,cmd_get = get_hits + get_misses。