1. 程式人生 > >memcache和memcached

memcache和memcached

memcache memcached 區別

  • 服務端
    服務端就是memcached,是C語言寫的,直接安裝即可。
    yum install libevent libevent-devel -y
    cd /usr/local/src/
    wget http://memcached.org/files/old/memcached-1.4.15.tar.gz
    tar xf memcached-1.4.15.tar.gz 
    cd memcached-1.4.15
    ./configure --prefix=/usr/local/memcaced
    make -j 8
    make install
    /usr/local/memcached/bin/memcached -d -m 1024 -c 1024 -u www 
  • 客戶端
    如果要連接memcached服務端,需要在客戶端安裝前先安裝所依賴的操作庫libmemcache和libmemcached。
    在這裏說一說libmemcache和libmemcached區別
    1)先有libmemcache,後有libmemcached
    2)前者開發使用率比較高
    3)libmemcached使用比較安全,並且內存消耗小,理論上比libmemcache更好
    客戶端:
    這裏以php連接memcached服務端的客戶端為例:memcache和memcached
    這兩者都是php的擴展,都是有php官方來維護的,但是有區別:
    1)基於的操作庫不同,memcache是基於ibmemcache開發的(原生的),memcached擴展是基於libmemcached庫開發的,支持cas操作,cas操作就是多個線程並發修改同一個key值時能進行處理。
    2)mc支持面向對象和面向過程兩套接口操作服務端。而mcd擴展只支持面向對象方式操作
    3)memcached支持Binary Protocol,而memcache不支持。還是庫的不同導致。理論上這意味著memcached會有更高的性能。
    通過$m->setOption(Memcached::OPT_BINARY_PROTOCOL,true) 設置二進制協議。
    目前大部分用戶還是使用文本協議,比較簡單穩定。實踐中使用二進制的還是比較少。
    共同點:mcd擴展提供session處理模塊:provides a session handler
    在靜態編譯到php中時使用選項 --disable-memcache-session 可以關閉memcache的session 支持(默認時開啟的)
  • 安裝
    這裏不提如何安裝擴展的內容,只提安裝過程中的註意事項:
    編譯memcache和memcached這兩個擴展的時候,都需要指定libmemcached庫或libmemcache庫的的安裝路徑的。所以預先安裝好libmemcached(memcache擴展依賴的是libmemcache庫)是編譯這個擴展的先決條件。要記得先編譯安裝好。如下指定安裝目錄用--with-libmemcached-dir=DIR 來指定路徑。這個路徑就是安裝libmemcached時指定的prefix的值(prefix是指定安裝目錄)
    如果沒有指定這個路徑項,就會去這些庫的默認標準安裝目錄找(我不知道去×××),所以最好是指定庫的位置來安裝(可控性強,以後遇到問題方便排查原因,比如以前編譯php使用pcre擴展,最好使用php引擎內置的pcre庫,使用linux系統上面的,容易出現編碼支持問題)。
  • memcache和memcached