一、簡介
html
Memcached 常被用來加速應用程序的處理,在這裏,咱們將着重於介紹將它部署於應用程序和環境中的最佳實踐。這包括應該存儲或不該存儲哪些、如何處理數據的靈活分佈以 及如何調節用來更新 memcached 和所存儲數據的方法。全部的應用程序,特別是不少 web 應用程序都須要優化它們訪問客戶機和將信息返回至客戶機的速度。但是,一般,返回的都是相同的信息。從數據源(數據庫或文件系統)加載數據十分低效,如果 每次想要訪問該信息時都運行相同的查詢,就尤顯低效。要是能從內存中直接加載這些信息,可想而知速度會快多少倍。
雖然不少 web 服務器均可被配置成使用緩存發回信息,但那與大多數應用程序的動態特性沒法相適。而這正是 memcached 的用武之地。它提供了一個通用的內存存儲器,可保存任何東西,包括本地語言的對象,這就讓您能夠存儲各類各樣的信息並能夠從諸多的應用程序和環境訪問這些信息。java
memcached存儲的是key/value的鍵值對,可是值必須是可序列化的對象(這裏我說的java),還能夠是json,xml,html 等,這裏要說明memcached集羣,server端之間並不會進行相互的通訊,通訊徹底由你的客戶端來完成,你只需在客戶端規定好你的key值,而後 set進行,此時會有一個散列算法,來決定你key會存放在哪臺server上。web
最後要注意一點,memcached主要使用於存儲實時性要求不是很高的信息。算法
二、安裝數據庫
Linux:centOs5.5json
安裝libevent緩存
這個庫Memcache用於Socket的處理,下載libevent,wget -O /opt http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz。
服務器
cd /opt tar zxvf libevent-1.4.13-stable.tar.gz cd libevent-1.4.13-stable ./configure -prefix=/usr make make install校驗 libevent是否安裝成功,ll /usr/lib | grep libevent*
lrwxrwxrwx 1 root root 21 07-19 06:01 libevent-1.4.so.2 -> libevent-1.4.so.2.1.3 -rwxr-xr-x 1 root root 308872 07-19 06:01 libevent-1.4.so.2.1.3 -rw-r--r-- 1 root root 396058 07-19 06:01 libevent.a lrwxrwxrwx 1 root root 26 07-19 06:01 libevent_core-1.4.so.2 -> libevent_core-1.4.so.2.1.3 -rwxr-xr-x 1 root root 110218 07-19 06:01 libevent_core-1.4.so.2.1.3 -rw-r--r-- 1 root root 149976 07-19 06:01 libevent_core.a -rwxr-xr-x 1 root root 860 07-19 06:01 libevent_core.la lrwxrwxrwx 1 root root 26 07-19 06:01 libevent_core.so -> libevent_core-1.4.so.2.1.3 lrwxrwxrwx 1 root root 27 07-19 06:01 libevent_extra-1.4.so.2 -> libevent_extra-1.4.so.2.1.3 -rwxr-xr-x 1 root root 247155 07-19 06:01 libevent_extra-1.4.so.2.1.3 -rw-r--r-- 1 root root 308358 07-19 06:01 libevent_extra.a -rwxr-xr-x 1 root root 867 07-19 06:01 libevent_extra.la lrwxrwxrwx 1 root root 27 07-19 06:01 libevent_extra.so -> libevent_extra-1.4.so.2.1.3 -rwxr-xr-x 1 root root 825 07-19 06:01 libevent.la lrwxrwxrwx 1 root root 21 07-19 06:01 libevent.so -> libevent-1.4.so.2.1.3
安裝memcac併發
安裝時還要指定libevent的安裝位置
下載memcached,wget -0 /opt http://memcached.googlecode.com/files/memcached-1.4.13.tar.gz
memcached
cd /opt tar zxvf memcached-1.4.13.tar.gz cd memcached-1.4.13 ./configure -with-libevent=/usr make make install校驗memcached是否安裝成功 ,ll /usr/local/bin | grep memcached*
-rwxr-xr-x 1 root root 234318 07-19 06:34 memcached
三、啓動&&關閉
/usr/local/bin/memcached -d -m 300 -u root -l 192.168.1.107 -p 11211 -c 400 -P /tmp/memcached.pid
netstat -ant或者lsof -i:11211查看
telnet 192.168.1.107 11211
輸入stats
STAT pid 19050 STAT uptime 8346 STAT time 1342660277 STAT version 1.4.13 STAT libevent 1.4.13-stable STAT pointer_size 32 STAT rusage_user 0.028995 STAT rusage_system 0.230964 STAT curr_connections 5 STAT total_connections 9 STAT connection_structures 6 STAT reserved_fds 20 STAT cmd_get 1 STAT cmd_set 0 STAT cmd_flush 0 STAT cmd_touch 0 STAT get_hits 0 STAT get_misses 1 STAT delete_misses 0 STAT delete_hits 0 STAT incr_misses 0 STAT incr_hits 0 STAT decr_misses 0 STAT decr_hits 0 STAT cas_misses 0 STAT cas_hits 0 STAT cas_badval 0 STAT touch_hits 0 STAT touch_misses 0 STAT auth_cmds 0 STAT auth_errors 0 STAT bytes_read 303 STAT bytes_written 1208 STAT limit_maxbytes 314572800 STAT accepting_conns 1 STAT listen_disabled_num 0 STAT threads 4 STAT conn_yields 0 STAT hash_power_level 16 STAT hash_bytes 262144 STAT hash_is_expanding 0 STAT expired_unfetched 0 STAT evicted_unfetched 0 STAT bytes 0 STAT curr_items 0 STAT total_items 0 STAT evictions 0 STAT reclaimed 0 END
啓動參數詳解:
-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
關閉只要殺掉進程便可。
四、開機啓動
vi /etc/rc.d/rc.local
把/usr/local/bin/memcached -d -m 300 -u root -l 192.168.1.107 -p 11211 -c 400 -P /tmp/memcached.pid加入便可。