Memcached 是一個高性能的分佈式內存對象緩存系統,用於動態Web應用以減輕數據庫負載。它經過在內存中緩存數據和對象來減小讀取數據庫的次數,從而提升動態、數據庫驅動網站的速度。Memcached基於一個存儲鍵/值對的hashmap。其守護進程(daemon )是用C寫的,可是客戶端能夠用任何語言來編寫,並經過memcached協議與守護進程通訊。php
一、協議簡單; 二、基於libevent的事件處理; 三、內置內存存儲方式; 四、memcached不互相通訊的分佈式。
爲了提升性能,memcached中保存的數據都存儲在memcached內置的內存存儲空間中。因爲數據僅存在於內存中,所以重啓memcached、重啓操做系統會致使所有數據消失。另外,內容容量達到指定值以後,就基於LRU(Least Recently Used)算法自動刪除不使用的緩存。memcached自己是爲緩存而設計的服務器,所以並無過多考慮數據的永久性問題。mysql
memcached服務器 192.168.13.128 (memcached-1.5.6.tar.gz、libevent-2.1.8-stable.tar.gz) memcache客戶端 192.168.13.129 (memcache-2.2.7.tgz 、LAMP)
[root@server ~]# yum install -y gcc gcc-c++ make ##安裝環境組件 [root@server ~]# mount.cifs //192.168.100.3/LNMP-C7 /mnt/ Password for root@//192.168.100.3/LNMP-C7: [root@server ~]# cd /mnt/memcached/ [root@server memcached]# tar zxvf libevent-2.1.8-stable.tar.gz -C /opt/ ##事件通知庫 [root@server memcached]# tar zxvf memcached-1.5.6.tar.gz -C /opt/ ##解壓事件庫服務端 [root@server memcached]# cd /opt/libevent-2.1.8-stable/ [root@server libevent-2.1.8-stable]# ./configure \ ##配置 > --prefix=/usr/local/libevent ##安裝路徑 [root@server libevent-2.1.8-stable]# make && make install ##編譯安裝 [root@server libevent-2.1.8-stable]# cd /opt/memcached-1.5.6/ [root@server memcached-1.5.6]# ./configure \ > --prefix=/usr/local/memcached \ > --with-libevent=/usr/local/libevent ##關聯libevent事件通知庫 [root@server memcached-1.5.6]# make && make install [root@server memcached-1.5.6]# ln -s /usr/local/memcached/bin/* /usr/local/bin/ ##創建軟鏈接 [root@server memcached-1.5.6]# memcached -d -m 32m -p11211 -uroot ##開啓服務 ##-d守護進程 ;-m緩存大小32M ;-p端口11211 [root@server memcached-1.5.6]# netstat -ntap | grep memcached ##查看端口 [root@server memcached-1.5.6]# systemctl stop firewalld.service [root@server memcached-1.5.6]# setenforce 0 [root@server memcached-1.5.6]# yum install telnet -y ##安裝telnet軟件 [root@server memcached-1.5.6]# telnet 127.0.0.1 11211 ##本地測試登陸 add username 0 0 7 ##0:不設置序列號0:不設置過時事件7:字節長度 1234567 STORED add users 0 0 7 123 ERROR get username ##查看 VALUE username 0 7 1234567 END gets username ##查看 VALUE username 0 7 1 ##1:更新次數 1234567 END
##lamp結構見前博客有具體操做 ##測試數據工做是否正常 [root@client php-5.6.11]# mysql -u root -pabc123 //進入數據庫 CREATE DATABASE sky; //建立一個數據庫爲 sky GRANT all ON sky.* TO 'skyuser'@'%' IDENTIFIED BY 'admin123'; //提權 flush privileges; //刷新數據庫 ##修改PHP首頁 [root@client php-5.6.11]# vim /usr/local/httpd/htdocs/index.php <?php $link=mysql_connect('192.168.13.129','skyuser','admin123'); if($link) echo "<h1>Success!!</h1>"; else echo "Fail!!"; mysql_close(); ?>
[root@client ~]# yum install autoconf -y [root@client ~]# cd /mnt/memcached/ [root@client memcached]# tar zvxf memcache-2.2.7.tgz -C /opt/ [root@client memcached]# cd /opt/memcache-2.2.7/ [root@client memcache-2.2.7]# /usr/local/php5/bin/phpize ##增長PHP模塊生成腳本 [root@client memcache-2.2.7]# ./configure \ > --enable-memcache \ ##開啓memcache > --with-php-config=/usr/local/php5/bin/php-config ##關聯PHP配置文件 [root@client memcache-2.2.7]# make && make install /usr/local/php5/lib/php/extensions/no-debug-zts-20131226/ ##共享文件位置,後面須要用到 [root@client memcache-2.2.7]# vim /usr/local/php5/php.ini ##修改php配置文件 extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-zts-20131226/" ##共享文件位置 extension = memcache.so ##指向memcache模塊
[root@client memcache-2.2.7]# vim /usr/local/httpd/htdocs/index.php <?php $memcache=new Memcache(); $memcache->connect('192.168.13.128',11211); ##鏈接Memcached服務器地址 $memcache->set('key','Memcache test Successfull!',0,60); $result=$memcache->get('key'); unset($memcache); echo$result; ?> [root@client memcache-2.2.7]# service httpd stop ##重啓 [root@client memcache-2.2.7]# service httpd start ##瀏覽器訪問
add username 0 0 7 //添加數據(兩個0表示:不進行壓縮和序列化標識,數據過時時間爲永不過時;標識號是7就須要輸入7位數。) allways //輸入一個7位數
get username //查詢數據 gets username
set username 0 0 10 //更新信息,若鍵名不存在,則自行添加 everything replace username 0 0 8 //更新信息,若鍵名不存在,則報錯 12345678
gets username //檢測更新 VALUE username 0 8 4 12345678
append username 0 0 7 //鍵值後追加數據 example prepend username 0 0 2 //鍵值前追加數據 un
delete username //清除指定的鍵值數據 flush_all //清除全部緩存數據 OK
stats //顯示狀態信息 stats items //返回全部鍵值對的統計信息 stats cachedump 1 0 //返回指定存儲空間的鍵值對 stats slabs //顯示各個slab的信息 stats sizes //輸出全部item的大小和個數 stats reset //清空統計數據