1. 程式人生 > >高性能內存對象緩存Memcached安裝及數據庫操作與管理

高性能內存對象緩存Memcached安裝及數據庫操作與管理

客戶端程序 環境變量 rest close sql數據庫 blog erl gcc-c++ 安裝php

認識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安裝及數據庫操作與管理