LAMP架构中Memcached缓存应用

什么是Memcached ?

Memcached是一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,进而提升系统性能。Memcache多数情况是作为数据库的前端Cache来使用,因为它比数据库少了很多sql解析、磁盘操作等开销,而且使用内存来管理数据,所以它可以提供比直接读取数据库更好的性能。

缓存一般用来保存一些经常存取的对象或数据(例如,浏览器会把经常访问的网页缓存起来),通过缓存来存取对象或数据要比磁盘快很多。Memcache是一种内存缓存,把经常存取的对象或数据存在内存中,内存中缓存的数据通过API的方式被存取,数据就像一张大的HASH表,以key-value对的方式存在。

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

  1. 检查客户端请求的数据是否在Memcache中存在,如果在,直接把请求的数据返回,不再对数据进行任何操作;
  2. 如果请求的数据不在Memcache中,就在查询数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到Memcache中;
  3. 每次更新数据库(如更新、删除数据库的数据)的同时更新Memcache中的数据,保证Memcache中的数据和数据库中的数据一致。
  4. 当分配给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 <key> <flags> <expiration time> <bytes>
<value>

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

<?php
    phpinfo();
?>

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.51cto.com/images/blog/201807/25/7f0ba593f9d05d86f8e0f75065739d88.png?x-oss-process=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

<?php
$memcache = new Memcache();
$memcache->connect(‘192.168.96.22‘,11211);
$memcache->set(‘key‘,‘Memcache test Successfull!‘,0,60);
$result = $memcache->get(‘key‘);
unset($memcache);
echo $result;
?>

24.重启httpd服务

service httpd restart

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

原文地址:http://blog.51cto.com/10316297/2150218

时间: 2024-10-09 20:25:38

LAMP架构中Memcached缓存应用的相关文章

在LAMP架构中安装Memcached高性能内存对象缓存应用(内含所有源码包)

初识memcached: Memcached是一套开源的高性能分布式内存对象缓存系统,它将所有的数据都存储在内存中,因为在内存中会统一维护一张巨大的hash表,所以支持任意存储类型的数据.很多网站通过使用memcached提高网站的访问速度,尤其是对于大型的需要频繁访问数据的网站. Memcached是典型的C/S结构,因此需要安装memcached服务端和memcached API客户端.Memcached服务端是用C语言编写的,而memcached API客户端可以用任何语言来编写,如PHP

在LAMP架构中部署zabbix监控系统及邮件报警机制

初步了解zabbix: Zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题.是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.被监控对象只要支持SNMP协议或者运行zabbix_agents代理程序即可.agent端:主机通过安装agent方式采集数据.server端:通过收集agent发送的数据,写入数据库(MySQL,ORACLE等),再通过php+apache在web前端展示. SNMP:

LAMP架构中部署Zabbix监控服务

Zabbix监控服务 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题.zabbix由2部分构成,zabbix server与可选组件zabbix agent.zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Sola

百万PV架构中redis缓存服务群集部署

redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排序.与memcached一样,为了保证效率,数据都是缓存在内存中.区别的是redis会周

Memcached 缓存用法实例

本文实例讲述了C#中Memcached缓存的用法,分享给大家供大家参考.具体方法如下: ICacheStrategy.cs文件如下: 复制代码 代码如下: public interface ICacheStrategy {         /// <summary>         /// 添加数据到缓存         /// </summary>         /// <param name="objId">缓存名称</param>

解析Java分布式系统中的缓存架构(上)

作者 陈彩华 文章转载交流请联系 [email protected] 本文主要介绍大型分布式系统中缓存的相关理论,常见的缓存组件以及应用场景. 1 缓存概述 2 缓存的分类 缓存主要分为以下四类 2.1 CDN缓存 基本介绍 CDN(Content Delivery Network 内容分发网络)的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求

深入理解分布式系统中的缓存架构(上)

本文主要介绍大型分布式系统中缓存的相关理论,常见的缓存组件以及应用场景. 1 缓存概述!2 缓存的分类 缓存主要分为以下四类!2.1 CDN缓存 基本介绍 CDN(Content Delivery Network 内容分发网络)的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求 应用场景 主要缓存静态资源,例如图片,视频 应用图优点 2.2 反向

Linux中Apache(http)和LAMP架构(重点)

apache介绍: 世界上使用率最高的网站服务器,最高时可达70%:官方网站:apache.org :80 — 端口 http对应80端口,https对应443端口 LAMP安装说明 ①源码包安装  自定义 开发版本选择方便 效率高 生产环境 安全 稳定 开发环境 局域网(内网) ②二进制包安装 yum命令安装 官方版本比较低 apache三种工作模式: 1.prefork 工作模式(作用:用一个进程处理一个用户请求) 优点:成熟稳定,兼容所有新老模块.同时,不需要担心线程安全的问题. 缺点:一

使用memcached缓存 替代solr中的LRUCache缓存

前沿 在搜索引擎中,缓存被当做是不可缺少的部分,但是很多情况下,将缓存的实现过度依赖于分发服务器及webserver会很大程度上加重webserver 的负担,具体表现就是经常性的假死,拒绝服务,因此为了解放前端转发服务器,我们将使用solr + memcache后端搭档组合实现缓存. 前期准备条件: 点击下面的下载地址,将memcache必备的工具包和java类下载至本地 memcached-2.2.jar spy-2.4.jar 下载地址: http://solr-side.googleco