詳解----memcache服務端與客戶端

 

 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 清理統計數據
相關文章
相關標籤/搜索