Memcache
創(chuàng)新互聯(lián)建站長期為1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為望花企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè),望花網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
Memcache的作用網(wǎng)上資料都講的很好,說簡單點(diǎn)就是減輕讀取數(shù)據(jù)庫的壓力,原理也很簡單:
被請求的數(shù)據(jù)會先到memcache里去取,如果沒有就去數(shù)據(jù)庫里取,順便給memcache帶一份。
每次更新數(shù)據(jù)也先更新memcache里的數(shù)據(jù),如果沒有則更新數(shù)據(jù)庫,同時(shí)更新memcache。
因此需要注意的是這個(gè)數(shù)據(jù)是易失去性存儲的。
模式和端口
Memcache是一個(gè)基于C/S的結(jié)構(gòu):
服務(wù)端:使用Memcached軟件
客戶端:使用Memcache插件 (這個(gè)插件是結(jié)合后端語言比如php python java)
服務(wù)端口:11211(可改)
軟件清單:
libevent依賴庫 http://www.libevent.org/
memcache插件 http://pecl.php.net/package/memcache/
memcached服務(wù) http://www.memcached.org/
lamp環(huán)境 yum -y install httpd php php-MySQL mysql-server
操作系統(tǒng) CentOS-6.5(x86_64)
1.將上傳相關(guān)軟件包,安裝lamp環(huán)境
yum -y install httpd php php-mysql mysql-server /etc/init.d/httpd start echo "<?php phpinfo()?>" > /var/www/html/index.php
然后用瀏覽器訪問查看php信息,在信息里面是找不到memcache的
2.安裝libevent插件
tar xf libevent-2.0.22-stable.tar.gz cd libevent-2.0.22-stable ./configure --prefix=/usr/local/libevent && make && make install
3.安裝memcached服務(wù)端
tar xf memcached-1.4.36.tar.gz cd memcached-1.4.36 ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/ make && make install
安裝好后會在/usr/local/memcached/bin/目錄下生成memcached
4.配置環(huán)境變量
cd /etc/profile.d/ vim mem.sh export PATH="/usr/local/memcached/bin:$PATH" #寫入profile文件開機(jī)自動導(dǎo)入 memcached -m 32 -p 11211 -d -c 8192 -u root #m分出內(nèi)存大小 p 端口 d 混合模式 c 最大連接數(shù) netstat -anptu | grep memcached #查看是否啟動,運(yùn)行多實(shí)例更改端口即可 free -m #可以看到內(nèi)存越來越少,因?yàn)楸环峙涑鋈チ恕 s -aux | grep memcached #查看進(jìn)程pid是多少 kill -9 1234 #關(guān)閉memcached服務(wù) pkill memcached #同上
5.memcached使用
yum -y install nc telnet
1)使用nc命令連接memcache
printf "set first 0 30 5\r\nmmmmm\r\n" | nc 127.0.0.1 11211 #存數(shù)據(jù) (字段分別為 key,標(biāo)志,效期,長度,值 ) printf "get first\r\n" | nc 127.0.0.1 11211 #取數(shù)據(jù)
2)使用telnet命令連接memcache
telnet 127.0.0.1 11211 #然后就可以使用相關(guān)的memcached命令了
6.下面是關(guān)于memcached相關(guān)的操作命令
add key1 0 30 3 #添加數(shù)據(jù)30為效期(如果寫0表示永不過期) 3為大小
set key1 0 30 3 #更新數(shù)據(jù),不存在會自動創(chuàng)建
replace key1 0 30 3 #更新數(shù)據(jù),不存在會報(bào)錯
delete key1 #刪除數(shù)據(jù)
get key1 #獲取數(shù)據(jù)
gets key 1 #獲取更多信息
stats setting #查看配置信息
stats slabs #查看slab
stats items #查看item
stats size #查看大小
7.安裝memcache客戶端php插件
安裝phpize命令可以為php添加新模塊
如果不知道是什么包可以使用 yum provides */phpize
yum -y install php-devel tar xf memcache-2.2.7.tgz cd memcache-2.2.7 phpize #打模塊,生成configure等文件 which php-config #查看php-config路徑位置 ./configure --enable-memcache --with-php-config=/usr/bin/php-config make && make install
安裝號后模塊會被安裝置/usr/lib64/php/modules/memcache.so
cd /etc/php.d/ cp mysql.ini memcache.ini #vim進(jìn)行編輯將extension的值設(shè)置成memcache.so
重啟服務(wù)后可以看到php已經(jīng)支持了memcache模塊了
8.后面可以結(jié)合php網(wǎng)站測試數(shù)據(jù)庫相關(guān)
tar xf memcache_page.tar.gz -C /var/www/html/ cd !$
測試頁面有 mysql_connect.php 編輯一下
因此需要先把mysql的用戶設(shè)置一下
/etc/init.d/mysqld start mysql_secure_installation
或者自己在數(shù)據(jù)庫里
grant all on *.* to 'root'@'127.0.0.1' identified by '123456' flush privileges
然后瀏覽器訪問mysql_connect.php
對接成功
這里可以閱讀read.php和write.php了解memcache的讀寫原理
read.php
<?php$memcachehost = '192.168.1.113';$memcacheport = 11211;$memcachelife = 60; #memcache默認(rèn)有效期$memcache = new Memcache;$memcache->connect($memcachehost,$memcacheport) or die ("Could not connect"); #連接memcache
write.php
<?php$memcachehost = '192.168.1.113';$memcacheport = 11211;$memcachelife = 60;$memcache = new Memcache;$memcache->connect($memcachehost,$memcacheport) or die ("Could not connect");$num=$_POST["num"];$db=db1;$tb=T1;$query="insert into $tb values($num)";#$key=md5($query);$key=md5($num);if(!$memcache->get($key)) //先嘗試更新memcache,如果不存在,則再去更新數(shù)據(jù)庫,同時(shí)更新存儲到memcachce{ $conn=mysql_connect("127.0.0.1","root","123456"); mysql_select_db($db); $result=mysql_query($query); while ($row=mysql_fetch_assoc($result)) { $arr[]=$row; } $f = 'mysql'; $memcache->add($key,serialize($arr),0,30); //mysql 插入成功后,插入 memcached $data = $arr ;#}#else{ $f1 = 'memcache'; $data_mem=$memcache->get($key); $data = unserialize($data_mem); }echo "$f $f1 $num";echo "<br>";?>
關(guān)于php memcache簡單用法參見http://www.cnblogs.com/demonxian3/p/6868361.html
上面兩個(gè)php里可以看到調(diào)用了數(shù)據(jù)庫的db1 和 表T1因此需要創(chuàng)建一下
seq 1 999 > /tmp/sum #創(chuàng)建1-999的測試數(shù)據(jù)
連接數(shù)據(jù)庫導(dǎo)入數(shù)據(jù)
create database db1; create T1(id int)engine=innodb; load data infile '/tmp/sum' into table T1; #導(dǎo)入測試數(shù)據(jù)科普一下:使用history查看歷史命令,輸入!+數(shù)字可以執(zhí)行編號的那條命令
?。?11
用瀏覽器來訪問那個(gè)測試頁面
測試讀取數(shù)據(jù),從數(shù)據(jù)庫里查詢出id為5的值
后退再去取一次
測試寫入數(shù)據(jù)
最后給大家推薦一款很好用的memcache管理工具:memadmin php寫的
文章標(biāo)題:Memcache服務(wù)搭建
網(wǎng)頁網(wǎng)址:http://aaarwkj.com/article34/jesese.html成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、用戶體驗(yàn)、微信小程序、網(wǎng)站收錄、企業(yè)建站、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)