您好,登錄后才能下訂單哦!
Memcached是高性能的分布式內存緩存服務器,通過在內存里維護一個統一的巨大的hash表,它能夠用來存儲各種格式的數據,包括圖像、視頻、文件以及數據庫檢索的結果等, 由國外社區網站 LiveJournal 的開發團隊開發。一般的使用目的是,通過緩存數據庫查詢結果,減少數據庫訪問次數,以提高動態Web應用的速度、提高可擴展性。
官方網站:http://www.danga.com/memcached/
當Web客戶端發送請求到web服務器的應用程序時,應用程序會通過調用Memcached API客戶端程序庫接口去連接 Memcached服務器,進而查詢數據。
1、如果此時web客戶端所請求的數據已經在 Memcached服務端中緩存,則 Memcached服務端會將數據返回給Web客戶端;
2、如果數據不存在,則會將Web客戶端請求發送至MySQL數據庫,由數據庫將請求的數據返回給 Memcached以及Web客戶端,與此同時Memcached服務器也會將數據進行保存,方便用戶下次使用。
memcached的服務器客戶端通信并不使用復雜的XML等格式, 而使用簡單的基于文本行的協議。因此,通過telnet 也能在memcached上保存數據、取得數據。下面是例子。
$ telnet localhost 11211
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
set foo 0 0 3 (保存命令)
bar (數據)
STORED (結果)
get foo (取得命令)
VALUE foo 0 3 (數據)
libevent是個程序庫,它將Linux的epoll、BSD類操作系統的kqueue等事件處理功能 封裝成統一的接口。即使對服務器的連接數增加,也能發揮O(1)的性能。 memcached使用這個libevent庫,因此能在Linux、BSD、Solaris等操作系統上發揮其高性能。
為了提高性能,memcached中保存的數據都存儲在memcached內置的內存存儲空間中。 由于數據僅存在于內存中,因此重啟memcached、重啟操作系統會導致全部數據消失。 另外,內容容量達到指定值之后,就基于LRU(Least Recently Used)算法自動刪除不使用的緩存。 memcached本身是為緩存而設計的服務器,因此并沒有過多考慮數據的永久性問題。
數據存儲方式:Slab Allocation
Slab Allocation即按組分配內存,每次先分配一個slab,相當于一個大小為1MB的頁,然后在1MB的空間里根據數據劃分大小相同的chunk,該方法可以有效解決內存碎片問題,但可能會對空間有所浪費。
memcached盡管是“分布式”緩存服務器,但服務器端并沒有分布式功能。 各個memcached不會互相通信以共享信息。
緩存機制:
Memcached是一款非常出色的緩存軟件,當程序寫入緩存數據請求時, Memcached的API接口將Key輸入路
由算法模塊路由到集群中一臺服務器,之后由API接口與服務器進行通信,完成一次分布式緩存寫入。
分布式
Memcached分布式部署主要依賴于 Memcached的客戶端來實現,多個 Memcached服務器是獨立的。分布式數據如何存儲是由路由算法所決定的。當數據到達客戶端程序庫時,客戶端的算法就依據路由算法來決定保存的Memcached服務器。讀取數據時,客戶端依據保存數據時的路由算法選中和存儲數據時相同的服務器來讀取數據。
本實驗用2臺CentOS7:
主機 | IP地址 | 角色 | 主要軟件包 |
---|---|---|---|
Memcached | 192.168.37.128 | Memcached? 服務器 | libevent-2.1.8-stable.tar.gzmemcached-1.5.6.tar.gz |
Memcached ?API | 192.168.37.130 | Memcached? API客戶端 | http-2.4.29.tar.gz;mysql-5.6.26.tar.gz;php-5.6.11.tar.bz2;memcache-2.2.7.tar.gz |
1、安裝編譯環境
yum install gcc gcc-c++ make
2、解壓安裝包
tar zxvf memcached-1.5.6.tar.gz -C /opt
tar zxvf libevent-2.1.8-stable.tar.gz -C /opt #libevent:事件通知庫
3、手工編譯安裝libevent、memcached
cd /opt/libevent-2.1.8-stable/
./configure --prefix=/usr/local/libevent
make && make install
cd /opt/memcached-1.5.6/
./configure \
--prefix=/usr/local/memcached \
--with-libevent=/usr/local/libevent/
make && make install
4、建立軟連接
ln -s /usr/local/memcached/bin/* /usr/local/bin
5、開啟memcached
systemctl stop firewalld.service
setenforce 0
memcached -d -m 32m -p 11211 -u root
#-d: 指定守護進程 -m:緩存大小 -p:端口 -u:指定管理用戶
netstat -ntap | grep memc
(一)Apache搭建
1、安裝環境包
yum install gcc gcc-c++ make pcre-devel expat-devel perl -y
2、解壓安裝包
tar xzvf http-2.4.29.tar.gz -C /opt
tar xzvf apr-1.4.6.tar.gz -C /opt #支持Apache上層應用跨平臺,提供底層接口庫
tar xzvf apr-util-1.4.1.tar.gz -C /opt
mv apr-1.6.2/ httpd-2.4.29/srclib/apr
mv apr-util-1.6.0/ httpd-2.4.29/srclib/apr-util
3、手工編譯安裝
cd /opt/httpd-2.4.29
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
make && make install
4、編輯啟動腳本
grep -v "#" /usr/local/httpd/bin/apachectl > /etc/init.d/httpd #過濾配置文件中注釋信息,拷貝到服務程序目錄下
vi /etc/init.d/httpd #在文件最前面插入下面的行
#!/bin/sh
# chkconfig:2345 85 21
#description:Apache is a World Wide Web server.
chmod +x /etc/init.d/httpd
chkconfig --add httpd **#將httpd加入系統服務**
5、優化服務,使系統識別命令
ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf
ln -s /usr/local/httpd/bin/* /usr/local/bin
6、編輯httpd主配置文件
vim /usr/local/httpd/conf/httpd.conf
ServerName www.yun.com:80
Listen 192.168.37.130:80
7、開啟httpd服務
systemctl stop firewalld.service
setenforce 0
apachectl -t #檢查語法
service httpd start
1、安裝環境包
yum -y install ncurses-devel autoconf cmake
2、手工編譯安裝mysql
tar zxvf mysql-5.6.26.tar.gz -C /opt #解壓軟件包
cd /opt/mysql-5.6.26
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DSYSCONFIDIR=/etc \
-DMYSQL_DATADIR=/home/mysql/ \
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock \
make && make install
3、添加系統服務
cp support-files/mysql.server /etc/init.d/mysqld #添加系統服務
chmod 755 /etc/init.d/mysqld #修改執行權限
chkconfig --add /etc/init.d/mysqld #將mysqld添加為系統服務
chkconfig mysqld --level 235 on #
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile #重新加載環境變量
useradd -s /sbin/nologin mysql #創建進程用戶mysql
chown -R mysql:mysql /usr/local/mysql/ #修改mysql的屬主、屬組
4、初始化數據庫
/usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--ldata=/var/lib/mysql \
--basedir=/usr/local/mysql \
--datadir=/home/mysql
5、建立軟連接
ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock
6、編輯配置文件
vi /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/home/mysql
7、啟動mysql服務
service mysqld start
netstat -ntap | grep 3306
1、安裝環境包
yum -y install gd libpng pcre libxml2-devel libjpeg-devel libpng-devel fontconfig-devel openssl-devel bzip2-devel
2、手工編譯安裝php
tar xjvf php-5.6.11.tar.bz2 -C /opt
cd /opt/php-5.6.11
./configure \
--prefix=/usr/local/php5 \
--with-gd \
--with-zlib \
--with-apxs2=/usr/local/httpd/bin/apxs \
--with-mysql=/usr/local/mysql \
--with-config-file-path=/usr/local/php5 \
--enable-mbstring
make && make install
3、創建php配置文件
cp php.ini-development /usr/local/php5/php.ini
4、建立軟連接
ln -s /usr/local/php5/bin/ /usr/local/bin/
ln -s /usr/local/php5/sbin/ /usr/local/sbin
5、修改apache配置文件
vim /etc/httpd.conf
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps #/etc/httpd.conf 查看是否有php5
DirectoryIndex index.php index.html
6、修改apache首頁測試php
<?php
phpinfo();
?>
mv index.html index.php #與httpd配置文件中設置要相同
6、重啟httpd服務,測試
訪問:http://192.168.37.130/index.php
1、創建數據庫test
create database a
2、test數據庫給auser用戶授權
grant all on a.* to 'auser'@'%' identified by '123123'; #授權
flush privileges; #刷新權限
3、再次修改apache首頁訪問數據庫
vim /usr/local/httpd/htdocs/index.php
<?php
$link=mysql_connect('192.168.37.130','auser','123123');
if($link) echo "<h2>Success!!</h2>";
else echo "Fail!!";
mysql_close();
?>
4、重啟apache服務,測試數據庫連接
1、安裝環境包
yum install autoconf -y
2、手工編譯安裝memcached
tar zxvf memcache-2.2.7.tar.gz -C /opt
cd /opt/memcache-2.2.7/ #注意:無configure
/usr/local/php5/bin/phpize #增加為PHP模板后再對memcache進行配置
./configure \
--enable-memcache \
--with-php-config=/usr/local/php5/bin/php-config
make && make install
/usr/local/php5/lib/php/extensions/no-debug-zts-20131226/ #安裝完成后復制此行
3、為PHP添加memcached組件
vim /usr/local/php5/php.ini
extension_dir = "ext" #此行下添加
extension_dir ="/usr/local/php5/lib/php/extensions/no-debug-zts-20131226/" #復制內容添加到此處
extension = memcache.so
4、修改apache首頁
vim /usr/local/httpd/htdocs/index.php
<?php
$memcache = new Memcache();
$memcache->connect('192.168.37.128',11211);
$memcache->set('key','Memcache test Successful!',0,60);
$result = $memcache->get('key');
unset($memcache);
echo $result;
?>
5、重啟apache服務,測試
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。