Memcache是danga.com的一個項目,用這個緩存項目來構建本身大負載的網站,來分擔數據庫的壓力。php
它能夠應對任意多個鏈接,使用非阻塞的網絡IO。因爲它的工做機制是在內存中開闢一塊空間,而後創建一個HashTable,Memcached自管理這些HashTable。mysql
爲何會有Memcache和memcached兩種名稱?web
這麼理解吧,你知道mysql吧,mysql就是服務器,可是php沒有mysql擴展是連不上,redis
memcached用來進行內存緩存,php要鏈接須要添加memcache擴展,這下理解了吧。sql
下面是配置方法:數據庫
1)安裝memcached前須要先安裝libevent 緩存
[root@aliyun tools]# tar -zxf libevent-1.4.13-stable.tar.gz [root@aliyun tools]# cd libevent-1.4.13-stable [root@aliyun libevent-1.4.13-stable]# ./configure [root@aliyun libevent-1.4.13-stable]# make && make install
2) 安裝memcahced服務 服務器
tar -zxf memcached-1.4.13.tar.gz cd memcached-1.4.13 ./configure make && make install
3)啓動服務cookie
[root@weiwei memcached-1.4.13]# memcached -m 16m -p 11211 -d -u root -c 8192 給多少內存要本身算,根據需求 還能夠同時起幾個 [root@weiwei memcached-1.4.13]# memcached -m 16m -p 11212 -d -u root -c 8192 [root@weiwei memcached-1.4.13]# memcached -m 16m -p 11213 -d -u root -c 8192
4)存數據取數據網絡
操做memcached命令的語法: set key 0 0 10 <command name> <key> <flags><exptime><bytes>\r\n 過時時間
#存儲 [root@weiwei ~]# printf "set key008 0 0 10\r\noldboy0987\r\n" | nc 127.0.0.1 11211 STORED #查詢 [root@weiwei ~]# printf "get key008\r\n"|nc 127.0.0.1 11211 VALUE key008 0 10 oldboy0987 END #刪除 [root@weiwei ~]# printf "delete key008\r\n"|nc 127.0.0.1 11211 DELETED 也能夠telnet登陸,,而後操做,可是不是很建議,不方便
5)安裝memecache客戶端
ar -zxf memcache-2.2.5.tgz cd memcache-2.2.5 /application/php/bin/phpize ./configure --with-php-config=/application/php/bin/php-config --enable-memcache --with-zlib-dir echo $? make && make install ll /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/ total 244 -rwxr-xr-x. 1 root root 246624 Sep 25 20:09 memcache.so
6)由於配置客戶端因此要配置php.ini文件
改成以下: winodows的不要改 extension_dir = "/application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/" 並添加一行 extension=memcache.so
7)而後重啓php,查看是否生效
pkill php-fpm /application/php/sbin/php-fpm phpinfo();查看有沒有相應的模塊 用php腳本的方式查看 <?php $memcache = new Memcache; //建立一個memcache對象 $memcache->connect('127.0.0.1', 11211) or die ("Could not connect"); //鏈接Memcached服務器 $memcache->set('key001', 'oldboy001'); //設置一個變量到內存中,名稱是key001值是oldboy001 $memcache->set('key002', 'oldboy002'); //設置一個變量到內存中,名稱是key002值是oldboy002 $get_value01 = $memcache->get('key001'); //從內存中取出key001的值 $get_value02 = $memcache->get('key002'); //從內存中取出key002的值 echo $get_value02."<br>"; echo $get_value01; ?> 結果: oldboy002 oldboy001
8)memcached如何實現集羣中的session共享存儲
在php.ini文件中修改,全部的web服務器都改這兩個地方就能夠共享存儲session了,每一個WEB服務安裝個客戶端就好,而後去吧 1)session.save_handler = memcache 2)session.save_path = "tcp://192.168.222.128:11211" 優勢: 1)memcached是內存緩存,在讀寫速度上會比普通files時快不少。 2)能夠解決多個服務器共用session的難題。 缺點: 1)session數據都保存在memory中,持久化方面有所欠缺,但對session數據來講不是問題。 2)也能夠用其餘的持久化系統存儲sessions,例如:redis,ttserver。 3)高性能高併發場景,cookies的效率比session要好不少,所以,不少大網站都會用cookies解決會話共享問題
9)memcached狀態查看
stat settings能夠查看一些memcached設置 例如 線程數 stats slabs 查看slabs相關狀況 stats items 查看Items相關狀況 stats sizes查看存在的Item個數和大小 stats cachedump 查看key value stats reset 清理統計數據