Memcached構(gòu)建緩存服務(wù)器的方法
許多Web應(yīng)用都將數(shù)據(jù)保存到關(guān)系型數(shù)據(jù)庫(kù)( RDBMS)中,應(yīng)用服務(wù)器從中讀取數(shù)據(jù)并在瀏覽器中顯示。
但隨著數(shù)據(jù)量的增大、訪(fǎng)問(wèn)的集中,就會(huì)出現(xiàn)RDBMS的負(fù)擔(dān)加重、數(shù)據(jù)庫(kù)響應(yīng)惡化、 網(wǎng)站顯示延遲等重大影響。
Memcached/redis是高性能的分布式內(nèi)存緩存服務(wù)器,通過(guò)緩存數(shù)據(jù)庫(kù)查詢(xún)結(jié)果,減少數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)次數(shù),以提高動(dòng)態(tài)Web等應(yīng)用的速度、 提高可擴(kuò)展性。
RDBMS即關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(Relational Database Management System)
1、簡(jiǎn)介
1、nosql產(chǎn)品: redis,mongodb,memcached.
NOSQL名詞解釋?zhuān)悍顷P(guān)系型數(shù)據(jù)庫(kù)
(1)以鍵值對(duì)的方式存儲(chǔ)數(shù)據(jù)---(Key-Value)的形式
(2)緩存數(shù)據(jù)庫(kù) ——緩存服務(wù)器作用: 加快訪(fǎng)問(wèn)速度 ,緩解數(shù)據(jù)庫(kù)壓力
2、NoSQL的優(yōu)點(diǎn)/缺點(diǎn)
優(yōu)點(diǎn):
- 高可擴(kuò)展性
- 分布式計(jì)算
- 低成本
- 架構(gòu)的靈活性
- 沒(méi)有復(fù)雜的關(guān)系
缺點(diǎn):
- 沒(méi)有標(biāo)準(zhǔn)化
- 有限的查詢(xún)功能(到目前為止)
- 最終一致是不直觀的程序
緩存服務(wù)器作用: 加快訪(fǎng)問(wèn)速度 ,緩解數(shù)據(jù)庫(kù)壓力
3、關(guān)系型數(shù)據(jù)庫(kù)與非關(guān)系型數(shù)據(jù)庫(kù)的區(qū)別:---------面試高頻率問(wèn)題
1.首先了解一下 什么是關(guān)系型數(shù)據(jù)庫(kù)?
關(guān)系型數(shù)據(jù)庫(kù)最典型的數(shù)據(jù)結(jié)構(gòu)是表,由二維表及其之間的聯(lián)系所組成的一個(gè)數(shù)據(jù)組織。
優(yōu)點(diǎn):
1、易于維護(hù):都是使用表結(jié)構(gòu),格式一致;
2、使用方便:SQL語(yǔ)言通用,可用于復(fù)雜查詢(xún);
3、復(fù)雜操作:支持SQL,可用于一個(gè)表以及多個(gè)表之間非常復(fù)雜的查詢(xún)。
缺點(diǎn):
1、讀寫(xiě)性能比較差,尤其是海量數(shù)據(jù)的高效率讀寫(xiě);
2、固定的表結(jié)構(gòu),靈活度稍欠;
3、高并發(fā)讀寫(xiě)需求,傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)來(lái)說(shuō),硬盤(pán)I/O是一個(gè)很大的瓶頸
2.什么非關(guān)系型數(shù)據(jù)庫(kù)呢?非關(guān)系型數(shù)據(jù)是一種數(shù)據(jù)結(jié)構(gòu)化存儲(chǔ)方法的集合,可以是文檔或者鍵值對(duì)等
優(yōu)點(diǎn):
1、格式靈活:存儲(chǔ)數(shù)據(jù)的格式可以是key,value形式、文檔形式、圖片形式等等,文檔形式、圖片形式等等,使用靈活,應(yīng)用場(chǎng)景廣泛,而關(guān)系型數(shù)據(jù)庫(kù)則只支持基礎(chǔ)類(lèi)型。
2、速度快:nosql可以使用硬盤(pán)或者隨機(jī)存儲(chǔ)器作為載體,而關(guān)系型數(shù)據(jù)庫(kù)只能使用硬盤(pán);
3、高擴(kuò)展性;
4、成本低:nosql數(shù)據(jù)庫(kù)部署簡(jiǎn)單,基本都是開(kāi)源軟件。缺點(diǎn):
1、不提供sql支持,學(xué)習(xí)和使用成本較高;
2、無(wú)事務(wù)處理;
3、數(shù)據(jù)結(jié)構(gòu)相對(duì)復(fù)雜,復(fù)雜查詢(xún)方面稍欠。
2、memcached
1、特點(diǎn)
1.內(nèi)置內(nèi)存存儲(chǔ)方式-----------為了提高性能,memcached中保存的數(shù)據(jù)都存儲(chǔ)在memcache內(nèi)置的內(nèi)存存儲(chǔ)空間中。由于數(shù)據(jù)僅存在于內(nèi)存中,重啟操作系統(tǒng)會(huì)導(dǎo)致全部數(shù)據(jù)消失
2.簡(jiǎn)單key/value存儲(chǔ)---------------服務(wù)器不關(guān)心數(shù)據(jù)本身的意義及結(jié)構(gòu),只要是可序列化數(shù)據(jù)即可。
存儲(chǔ)項(xiàng)由“鍵、過(guò)期時(shí)間、可選的標(biāo)志及數(shù)據(jù)”四個(gè)部分組成;
2、服務(wù)框架
原理1、檢查客戶(hù)端的請(qǐng)求數(shù)據(jù)是否在memcached中,如有,直接把請(qǐng)求數(shù)據(jù)返回,不再對(duì)數(shù)據(jù)庫(kù)進(jìn)行任何操作,路徑操作為①②③⑦。
2、如果請(qǐng)求的數(shù)據(jù)不在memcached中,就去查數(shù)據(jù)庫(kù),把從數(shù)據(jù)庫(kù)中獲取的數(shù)據(jù)返回給客戶(hù)端,同時(shí)把數(shù)據(jù)緩存一份到memcached中(memcached客戶(hù)端不負(fù)責(zé),需要程序明確實(shí)現(xiàn)),路徑操作為①②④⑤⑦⑥。
3.保持緩存的“新鮮性”,每當(dāng)數(shù)據(jù)發(fā)生變化的時(shí)候(比如,數(shù)據(jù)有被修改,或被刪除的情況下),要同步更新的緩存信息,確保用戶(hù)不會(huì)在緩存取到舊的數(shù)據(jù)。
3、配置安裝Memcached
memcache能存放多少數(shù)據(jù),取決于服務(wù)器本身的內(nèi)存有多大。
1.安裝----準(zhǔn)備一臺(tái)服務(wù)器
[root@memcached ~]# yum install memcached -y [root@memcached ~]# systemctl start memcached #啟動(dòng)
2.修改配置文件
[root@memcached ~]# vim /etc/sysconfig/memcached PORT="11211" ---監(jiān)聽(tīng)的端口,默認(rèn)11211.可以修改 USER="memcached" -----用戶(hù) MAXCONN="1024" -----默認(rèn)并發(fā),可以修改 CACHESIZE="64" ------給的內(nèi)存。默認(rèn)是M OPTIONS="" ----監(jiān)聽(tīng)的網(wǎng)絡(luò)地址
然后把ip地址發(fā)給開(kāi)發(fā)人員,開(kāi)發(fā)的會(huì)使用api接口連接memcached.
測(cè)試:
[root@memcached ~]# yum install -y telnet #安裝telent [root@memcached ~]# telnet 192.168.246.188 11211 Trying 192.168.246.188... Connected to 192.168.246.188. Escape character is '^]'. set name 0 60 9 #設(shè)置名稱(chēng)為name的key key 標(biāo)記位(id號(hào)) 過(guò)期時(shí)間 大小 helloword #給name的值 STORED #出現(xiàn)stoped表示已經(jīng)存儲(chǔ)成功。 get name #查詢(xún)key值 VALUE name 0 9 helloword END quit ---退出
參數(shù)解釋:
name:key的名字 自己定義
0:key的id號(hào),需要和其他的key不一樣
60:緩存過(guò)期時(shí)間,單位為秒,0為永遠(yuǎn)
9:字符串最大長(zhǎng)度
不用它的原因:存儲(chǔ)的數(shù)據(jù)類(lèi)型單一,而且數(shù)據(jù)只能存儲(chǔ)在內(nèi)存中。無(wú)法實(shí)現(xiàn)數(shù)據(jù)的持久化,服務(wù)器重啟,數(shù)據(jù)將消失
=================================================================
擴(kuò)展:安裝php支持memcached的擴(kuò)展模塊:
安裝php7.0
[root@memcached ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm [root@memcached ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm [root@memcached ~]# yum -y install php70w.x86_64 php70w-cli.x86_64 php70w-common.x86_64 php70w-gd.x86_64 php70w-ldap.x86_64 php70w-mbstring.x86_64 php70w-mcrypt.x86_64 php70w-mysql.x86_64 php70w-pdo.x86_64 php70w-devel zlib-devel php70w-fpm libmemcached php70w-pecl-memcached [root@memcached ~]# yum install -y make gcc zlib-devel libmemcached-devel git
下載PHP Memcache 擴(kuò)展包
安裝nginx略,配置nginx的yum源。測(cè)試訪(fǎng)問(wèn)php的頁(yè)面。 [root@memcached ~]# vim /etc/nginx/conf.d/nginx.conf server { listen 80; server_name localhost; location ~ \.php$ { root /usr/share/nginx/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 編輯php頁(yè)面 [root@memcached html]# vim /usr/share/nginx/html/index.php <?php phpinfo(); ?> 重啟nginx 啟動(dòng)php-fpm 瀏覽器訪(fǎng)問(wèn)
到此這篇關(guān)于Memcached構(gòu)建緩存服務(wù)器的方法的文章就介紹到這了,更多相關(guān)Memcached緩存服務(wù)器內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。