高性能内存对象缓存Memcached安装及数据库操作与管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高性能内存对象缓存Memcached安装及数据库操作与管理相关的知识,希望对你有一定的参考价值。

认识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安装及数据库操作与管理的主要内容,如果未能解决你的问题,请参考以下文章

Memcached缓存系统介绍及安装

Memcached 安装及管理数据库操作

Memcached安装及数据库操作管理

python之Memcached 安装及操作

高性能内存对象缓存Memcached

memcached指令及分布式集群