设为首页 收藏本站
查看: 1182|回复: 0

[经验分享] LAMP架构中Memcached缓存应用

[复制链接]

尚未签到

发表于 2018-12-24 11:41:57 | 显示全部楼层 |阅读模式
什么是Memcached ?

  Memcached是一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,进而提升系统性能。Memcache多数情况是作为数据库的前端Cache来使用,因为它比数据库少了很多sql解析、磁盘操作等开销,而且使用内存来管理数据,所以它可以提供比直接读取数据库更好的性能。
  缓存一般用来保存一些经常存取的对象或数据(例如,浏览器会把经常访问的网页缓存起来),通过缓存来存取对象或数据要比磁盘快很多。Memcache是一种内存缓存,把经常存取的对象或数据存在内存中,内存中缓存的数据通过API的方式被存取,数据就像一张大的HASH表,以key-value对的方式存在。


Memcache和数据库协作的流程逻辑如下:



  • 检查客户端请求的数据是否在Memcache中存在,如果在,直接把请求的数据返回,不再对数据进行任何操作;
  • 如果请求的数据不在Memcache中,就在查询数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到Memcache中;
  • 每次更新数据库(如更新、删除数据库的数据)的同时更新Memcache中的数据,保证Memcache中的数据和数据库中的数据一致。
  • 当分配给Memcache内存空间用完之后,会使用LRU(最近最少使用)策略加到期失效策略,失效的数据首先被替换掉,然后再替换掉最近未使用的数据。


Memcached的特征:


  • 协议简单(基于文本行协议,可直接通过telnet在服务器上存取数据)
  • 基于libevent的事件管理
  • 内置的内存管理方式
  • 互不通信的Memcached之间具有分布特征

网站架构图


系统环境:


主机名
操作系统
IP地址
服务名




memcached
centos7.4
192.168.96.22
memcached-1.5.9.tar.gz、libevent-2.0.21-stable.tar.gz


web1
centos7.4
192.168.96.23
LAMP、memcache-2.2.7.tgz


客户端
windows 10
192.168.96.2
网页浏览器
  关闭防火墙及Selinux

systemctl stop firewalld
setenforce 0
  相关软件包百度云盘 密码:j2v3

开始部署

一、Memcache服务器

1.安装libevent软件

#解压
tar -zxvf libevent-2.0.21-stable.tar.gz -C /opt
#进入目录
cd /opt/libevent-2.0.21-stable/
#配置
./configure
#编译及安装
make && make install
2.安装memcached软件

#解压
tar zxvf memcached-1.5.9.tar.gz -C /opt
#进入目录
cd /opt/memcached-1.5.9/
#配置
./configure
#编译及安装
make && make install
3. 启动memcached服务

memcached -m 32m -p 11211 -d -u root -P /var/run/memcached.pid -c256
  以上选项说明如下:
-p:使用的tcp端口,默认为11211
-m:最大内存大小,默认为64M
-vv:以very vrebose模式启动,将调试信息和错误输出到控制台
-d:作为守护进程的后台运行
-c:最大运行的并发连接数,默认是1024,一般按照服务器的负载量来设置
-P:设置保存Memcached的pid文件
-l:监听的服务器IP地址,若有多个地址
-u:运行Memcached的用户,默认不能用root启动,若使用需要-u来指定root用户


4.查看memcached服务信息

netstat -tunlp | grep memcached
5.连接登录

telnet 192.168.96.22 11211
五种基本操作命令

    1. set
2. add
3. replace
4. get
5. delete
键值对语法如下:

  command   



memcached修改命令参数


参数
用法




key
key用于查找缓存值


flags
可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息


expiration time
在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)


bytes
在缓存中存储的字节点


value
存储的值(始终位于第二行)

memcached基本操作命令

1.set
set命令用于向缓存添加新的键值对,如果已经存在,则之前的值将被替换,响应STORED
2.add
当缓存中不存在键时,add命令才会向缓存中添加一个键值对,如果缓存中已经存在该键,则之前的值将仍将保持不变,并返回响应NOT_STORED
3.append username 0 0 4    //键值后追加4个字节
4.prepend username 0 0 2   //键值前追加2个字节
5.replace
仅当键已经存在时,replace命令才会替换缓存中的键,如果缓存中不存在该键,则返回响应NOT_STORED
6.get
用于检索与之前添加的键值对相关的值
7.delete
用于删除memcached中的任何现有值,将使用一个键调用delete,如果该键存在于缓存中,则删除该值。如果不存在,则返回一条NOT_FOUND消息。
8.stats
转储所连接的 memcached 实例的当前统计数据。
9.flush_all
仅用于清理缓存中的所有名称/值对。如果需要将缓存重置到干净的状态,则 flush_all 能提供很大的用处。
10.quit //退出
二、应用程序Memcache API(PHP服务器)

这里选择通过yum来快速搭建LAMP服务器

1.安装apache

yum install httpd httpd-devel -y
2.设置httpd服务开机启动

systemctl enable httpd
3.启动httpd服务

systemctl start httpd
4.查看端口监听情况

netstat -tunlp | grep httpd


5.客户端访问测试


6.安装mysql数据库

yum install mariadb mariadb-server mariadb-libs mariadb-devel -y
7.查看软件包情况

rpm -qa | grep mariadb


8.设置开机自启动

systemctl enable mariadb
9.启动mysql服务

systemctl start mariadb
10.查看端口监听情况

netstat -tunlp | grep mysql


11.数据库安全设置

  mysql_secure_installation


NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):           #直接“回车”
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
You already have a root password set, so you can safely answer 'n'.
Change the root password? [Y/n] y        #输入“y”
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y        #输入“y”
... Success!
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y        #输入“y”
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y        #输入“y”
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y        #输入“y”
... Success!
Cleaning up...
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
12.登录mysql数据库测试

mysql -u root -p


13.安装php

yum -y install php php-devel
14.查看已安装php相关软件包

rpm -ql php


15.将php和mysql作关联

yum install php-mysql
16.查看

rpm -ql php-mysql


17.安装常用的php模块

  yum install -y php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel php-bcmath


18.创建php测试页面

  cd /var/www/html
vim info.php



19.重启httpd服务

systemctl restart httpd
20.客户端测试php
  客户端访问http://192.168.96.22/info.php


21.客户端安装Memcache的PHP扩展功能

#安装autoconf软件包
yum install autoconf -y
#解压
tar xf memcache-2.2.7.tgz -C /opt/
#进入目录
cd /opt/memcache-2.2.7
#增加为PHP的模块后再对memcache进行配置编译
/usr/bin/phpize
![](http://i2.运维网.com/images/blog/201807/25/7f0ba593f9d05d86f8e0f75065739d88.png"=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
#配置
./configure \
--enable-memcache \
--with-php-config=/usr/bin/php-config
#编译及安装
make && make install


22.编辑php.ini

  vim /etc/php.ini


#732行,新增以下命令
extension_dir = "/usr/lib64/php/modules/"
#864行,新增以下命令
extension = memcache.so
23.编写测试页面,测试memcached工作是否正常

  vim /var/www/html/index.php



24.重启httpd服务

  service httpd restart


25.客户端进行访问测试是否成功 ,http://192.168.96.22/index.php





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-655262-1-1.html 上篇帖子: 理解高性能内存缓存对象缓存Memcached原理 (Memcached核心概念,部署) 下篇帖子: Memcached主主复制+Keepalived高可用群集
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表