高性能內存對象緩存Memcached安裝及數據庫操作與管理
Memcached是一套開源的高性能分布式內存對象緩存系統,它將所有的數據都存儲在內存中,因為在內存中會統一維護一張巨大的Hash表,所以支持任意存儲類型的數據。很多網站通過使用Memcached提高網站的訪問速度,尤其是對於大型的需要頻繁訪問數據的網站。Memcached是典型的C/S架構,因此需要安裝Memcached服務端與MemcachedAPI客戶端。Memcached服務端是用C語言編寫的,而Memcached API客戶端可以用任何語言來編寫,如PHP、Python、 Perl等,並通過Memcached協議與Memcached服務端進行通信。
當Web客戶端發送請求到Web服務器的應用程序時,應用程序會通過調用Memcached API客戶端程序庫接口去連接Memcached服務器,進而查詢數據。如果此時Web客戶端所請求的數據已經在Memcached服務端中緩存,則Memcached服務端會將數據返回給Web客戶端;如果數據不存在,則會將Web客戶端請求發送至MySQL數據庫,由數據庫將請求的數據返回給Memcached以及Web客戶端,與此同時Memcached服務器也會將數據進行保存,以方便用戶下次請求使用。
Memcached緩存機制
緩存是常駐在內存的數據,能夠快速進行讀取。而Memcached就是這樣一款非常出色的緩存軟件,當程序寫入緩存數據請求時,Memcached的API接口將Key輸入路由算法模塊路由到集群中一臺服務器,之後由API接口與服務器進行通信,完成一次分布式緩存寫入。
安裝Memcached案例
本案例使用兩臺CentOS 7系統和一臺Windows 7完成,兩臺CentOS 7中一臺是Memcached服務端,另一條是基於LAMP架構進行Memcached擴展的Memcached API客戶端
Memcached服務器IP: 192.168.10.172 主要軟件包: libevent-2.1.8-stable.tar.gz memcached-1.5.6.tar.gz Memcached API客戶端IP:192.168.10.154 主要軟件包: httpd-2.4.29.tar.gz mysql-5.6.26.tar.gz php-5.6.11.tar.bz2 libevent-2.1.8-stable.tar.gz memcached-1.5.6.tar.gz 測試主機IP:192.168.10.145
安裝Memcached服務器
1、解壓相關軟件包
tar xzvf memcached-1.5.6.tar.gz -C /opt/
tar xzvf libevent-2.1.8-stable.tar.gz -C /opt/
2、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/ //指明libevent安裝路徑 make && make install ln -s /usr/local/memcached/bin/* /usr/local/bin/ memcached -d -m 32m -p 11211 -u root //開啟服務,-d守護進程 -m緩存大小32M -p端口11211 netstat -anpt | grep memc //查看端口,確認開啟 systemctl stop firewalld.service setenforce 0 //關閉防火墻和安全功能
Memcached數據操作
#登錄
yum install telnet -y //安裝telnet進行連接登錄
telnet 127.0.0.1 11211 //本機所以是127.0.0.1
#輸入數據
add username 0 0 7 //不進行壓縮和序列化標識 數據過期時間為永不過期 標識號是7就需要輸入7位數。
example //輸入數據
#獲取數據
get username //獲取數據
VALUE username 0 7
example
gets username
VALUE username 0 7 1 //最後一位是更新因子會自增1
example
#更新數據
set username 0 0 10 //更新信息,若鍵名不存在,則自行添加
everything
replace username 0 0 8 //更新信息,若鍵名不存在,則報錯
12345678
#檢查更新
gets username
VALUE username 0 8 4
12345678
cas username 0 0 7 4 //檢查更新,更新因子相等則更新否則返回EXISTS
lodging
STORED
#追加數據
append username 0 0 7 //鍵值後追加數據
example
STORED
prepend username 0 0 2 //鍵值前追加數據
un
STORED
#清楚數據
delete username
flush_all //清除所有緩存數據
OK
#顯示狀態信息
stats //顯示狀態信息
#退出
quit //退出
3、客戶端搭建LAMP架構
1、安裝Apache
下面兩個apr插件是httpd2.4以後的版本所需
tar xzvf apr-1.6.2.tar.gz -C /opt
tar xzvf apr-util-1.6.0.tar.gz -C /opt
tar xzvf httpd-2.4.29.tar.gz -C /opt
cd /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
安裝環境包
yum -y install gcc gcc-c++ make pcre-devel expat-devel perl
配置並編譯安裝
cd /opt/httpd-2.4.29
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
make && make install
將啟動腳本復制到/etc/init.d/目錄下方便service管理,修改腳本
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
vi /etc/init.d/httpd
# chkconfig: 35 85 21 //35級別自動運行 第85個啟動 第21個關閉
# description: Apache is a World Wide Web server
chkconfig --add httpd //將httpd加入到SERVICE管理器
修改主配置文件,指定域名與監聽端口
vi /usr/local/httpd/conf/httpd.conf
ServerName www.yun.com:80
Listen 192.168.175.130:80
為方便管理創建軟鏈接,關閉防火墻並啟動服務
ln -s /usr/local/httpd/conf/httpd.conf /etc/
ln -s /usr/local/httpd/bin/* /usr/local/bin/
systemctl stop firewalld.service
setenforce 0 //關閉防火墻及安全功能
httpd -t
apachectl -t //檢查是否有誤
systemctl start httpd.service //開啟服務
netstat -anpt | grep 80 //檢查端口
2、安裝MYSQL
安裝相關環境包
yum install -y ncurses-devel autoconf cmake
解壓軟件包,配置,編譯安裝
tar xzvf 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
將啟動腳本復制到/etc/init.d/目錄下方便service管理
cp support-files/my-default.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld //給啟動腳本加權限
chkconfig --add /etc/init.d/mysqld //添加到service管理器中
chkconfig mysqld --level 35 on //35級別開機自啟動
設置環境變量
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile //環境變量
source /etc/profile //刷新環境變量
echo $PATH //查看
創建數據庫管理用戶,初始化數據庫
useradd -s /sbin/nologin mysql
chown -R mysql:mysql /usr/local/mysql/
cd /opt/mysql-5.6.26
/usr/local/mysql/scripts/mysql_install_db --user=mysql --ldata=/var/lib/mysql --basedir=/usr/local/mysql --datadir=/home/mysql //初始化數據庫
ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock //方便管理創建軟鏈接
修改主配置文件,並開啟服務
vi /etc/init.d/mysqld
basedir=/usr/local/mysql //指明安裝目錄
datadir=/home/mysql //指明數據存放目錄
systemctl start mysqld.service //開啟服務
netstat -anpt | grep 3306 //檢查端口是否開啟
mysqladmin -u root -p password "abc123" //給root賬號設置密碼
3、安裝PHP
安裝GD庫及相關環境包
yum -y install gd libpng libpng-devel pcre pcre-devel libxml2-devel libjpeg-devel
解壓軟件包,配置,並編譯安裝
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
方便管理創建軟鏈接
cp php.ini-development /usr/local/php5/php.ini
ln -s /usr/local/php5/bin/* /usr/local/bin/
ln -s /usr/local/php5/sbin/* /usr/local/sbin/
編輯Apache主配置文件,使其支持PHP
vim /etc/httpd.conf
#插入下兩行內容
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
#添加PHP類型的首頁
DirectoryIndex index.php index.html
首頁目錄下添加PHP類型的首頁,可使用瀏覽器測試
vi /usr/local/httpd/htdocs/index.php
<?php
phpinfo();
?>
瀏覽器測試“http://192.168.10.154/index.php”
下面測試數據庫工作是否正常
mysql -u root -p //進入數據庫
CREATE DATABASE sky; //創建sky庫
GRANT all ON sky.* TO ‘skyuser‘@‘%‘ IDENTIFIED BY ‘admin123‘; //允許任何網段用skyuser用戶,admin123密碼訪問
flush privileges; //刷新
#修改PHP類型的首頁文件內容為如下內容
<?php
$link=mysql_connect(‘192.168.175.130‘,‘skyuser‘,‘admin123‘);
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
mysql_close();
?>
再次使用瀏覽器進行訪問
4、Memcached API客戶端
1、安裝memcache
yum install autoconf -y
tar xzvf memcache-2.2.7.tgz -C /opt/
cd /opt/memcache-2.2.7
/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/ //記錄編譯安裝完的最後一行此內容,下面用到
vim /usr/local/php5/php.ini //搜索並修改下面一行,再新增一行內容如下
extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-zts-20131226/" //上面記錄的內容
extension = memcache.so
以下是在客戶端去檢測服務端是否可以連接
vim /usr/local/httpd/htdocs/index.php //編寫測試頁面,測試memcached工作是否正常
#重新插入如下內容
<?php
$memcache = new Memcache();
$memcache->connect(‘192.168.175.128‘,11211);
$memcache->set(‘key‘,‘Memcache test Successfull!‘,0,60);
$result = $memcache->get(‘key‘);
unset($memcache);
echo $result;
?>
systemctl restart httpd.service //重啟Apache
http://192.168.10.154/index.php //輸入客戶端地址測試是否成功
高性能內存對象緩存Memcached安裝及數據庫操作與管理