前言
許多Web應用都將數據保存到關系型數據庫( RDBMS)中,應用服務器從中讀取數據并在瀏覽器中顯示。
但隨著數據量的增大、訪問的集中,就會出現RDBMS的負擔加重、數據庫響應惡化、 網站顯示延遲等重大影響。
Memcached/redis是高性能的分布式內存緩存服務器,通過緩存數據庫查詢結果,減少數據庫訪問次數,以提高動態Web等應用的速度、 提高可擴展性。
RDBMS即關系數據庫管理系統(Relational Database Management System)
1、簡介
1、nosql產品: redis,mongodb,memcached.
NOSQL名詞解釋:非關系型數據庫
(1)以鍵值對的方式存儲數據---(Key-Value)的形式
(2)緩存數據庫 —— 緩存服務器作用: 加快訪問速度 ,緩解數據庫壓力
2、NoSQL的優點/缺點
優點:
- 高可擴展性
- 分布式計算
- 低成本
- 架構的靈活性
- 沒有復雜的關系
缺點:
- 沒有標準化
- 有限的查詢功能(到目前為止)
- 最終一致是不直觀的程序
緩存服務器作用: 加快訪問速度 ,緩解數據庫壓力
3、關系型數據庫與非關系型數據庫的區別:---------面試高頻率問題
1.首先了解一下 什么是關系型數據庫?
關系型數據庫最典型的數據結構是表,由二維表及其之間的聯系所組成的一個數據組織。
優點:
1、易于維護:都是使用表結構,格式一致;
2、使用方便:SQL語言通用,可用于復雜查詢;
3、復雜操作:支持SQL,可用于一個表以及多個表之間非常復雜的查詢。
缺點:
1、讀寫性能比較差,尤其是海量數據的高效率讀寫;
2、固定的表結構,靈活度稍欠;
3、高并發讀寫需求,傳統關系型數據庫來說,硬盤I/O是一個很大的瓶頸
2.什么非關系型數據庫呢?
非關系型數據是一種數據結構化存儲方法的集合,可以是文檔或者鍵值對等
優點:
1、格式靈活:存儲數據的格式可以是key,value形式、文檔形式、圖片形式等等,文檔形式、圖片形式等等,使用靈活,應用場景廣泛,而關系型數據庫則只支持基礎類型。
2、速度快:nosql可以使用硬盤或者隨機存儲器作為載體,而關系型數據庫只能使用硬盤;
3、高擴展性;
4、成本低:nosql數據庫部署簡單,基本都是開源軟件。
缺點:
1、不提供sql支持,學習和使用成本較高;
2、無事務處理;
3、數據結構相對復雜,復雜查詢方面稍欠。
2、memcached
1、特點
1.內置內存存儲方式-----------為了提高性能,memcached中保存的數據都存儲在memcache內置的內存存儲空間中。由于數據僅存在于內存中,重啟操作系統會導致全部數據消失
2.簡單key/value存儲---------------服務器不關心數據本身的意義及結構,只要是可序列化數據即可。
存儲項由“鍵、過期時間、可選的標志及數據”四個部分組成;

2、服務框架

原理
1、檢查客戶端的請求數據是否在memcached中,如有,直接把請求數據返回,不再對數據庫進行任何操作,路徑操作為①②③⑦。
2、如果請求的數據不在memcached中,就去查數據庫,把從數據庫中獲取的數據返回給客戶端,同時把數據緩存一份到memcached中(memcached客戶端不負責,需要程序明確實現),路徑操作為①②④⑤⑦⑥。
3.保持緩存的“新鮮性”,每當數據發生變化的時候(比如,數據有被修改,或被刪除的情況下),要同步更新的緩存信息,確保用戶不會在緩存取到舊的數據。
3、配置安裝Memcached
memcache能存放多少數據,取決于服務器本身的內存有多大。
1.安裝----準備一臺服務器
[root@memcached ~]# yum install memcached -y
[root@memcached ~]# systemctl start memcached #啟動
2.修改配置文件
[root@memcached ~]# vim /etc/sysconfig/memcached
PORT="11211" ---監聽的端口,默認11211.可以修改
USER="memcached" -----用戶
MAXCONN="1024" -----默認并發,可以修改
CACHESIZE="64" ------給的內存。默認是M
OPTIONS="" ----監聽的網絡地址
然后把ip地址發給開發人員,開發的會使用api接口連接memcached.
測試:
[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 #設置名稱為name的key key 標記位(id號) 過期時間 大小
helloword #給name的值
STORED #出現stoped表示已經存儲成功。
get name #查詢key值
VALUE name 0 9
helloword
END
quit ---退出
參數解釋:
name:key的名字 自己定義
0:key的id號,需要和其他的key不一樣
60:緩存過期時間,單位為秒,0為永遠
9:字符串最大長度
不用它的原因:存儲的數據類型單一,而且數據只能存儲在內存中。無法實現數據的持久化,服務器重啟,數據將消失
=================================================================
擴展:安裝php支持memcached的擴展模塊:
安裝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 擴展包
安裝nginx略,配置nginx的yum源。測試訪問php的頁面。
[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頁面
[root@memcached html]# vim /usr/share/nginx/html/index.php
<?php
phpinfo();
?>
重啟nginx
啟動php-fpm
瀏覽器訪問

到此這篇關于Memcached構建緩存服務器的方法的文章就介紹到這了,更多相關Memcached緩存服務器內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!