第Linux系统memcache安装及缓存

1、大型项目优化概述

1.1、PHP项目执行流程

在上述流程中每一个环节都可能会存在性能问题

1.2、优化方案

1.2.1、客户端请求web服务器

例如客户端是电信网络web服务器所接入的为教育网络。由于线路不一致需要进行转换因此导致缓慢。解决办法web服务器部署多线路

1.2.2、web服务器解析请求

1、PHP代码优化

2、PHP引擎的解析速度

3、缓存编译之后的结果(每次解析相同的文件不需要翻译)

1.2.3、MySQL处理

对于mysql数据库本身不能承载一个比较高的访问量并且不同的SQL语句性能都不一样。Mysql本身会存在很大的性能问题

1.3、优化可用技术

1.3.1、现有的解决方案

1.3.2、可用技术

1、网站开发中尽量使用较小的资源文件

2、使用压缩技术(gzip)

3、使用cdn加速资源文件

4、使用缓存技术(内存缓存redis/memcache/页面静态化)

5、对数据库进行优化

6、网站架构重构采用分层模式设计

7、使用负载均衡技术

8、数据库使用读写分离或者分布式技术

9、对相关软件配置进行优化

10、升级硬件

2、Memcache概述

2.1、Memcache介绍

Memcache是一个基于内存的键值对的缓存系统

2.1、关于内存

Memcache本身只是一款软件,能够去操作内存中的数据。因此memcache将数据保存在内存中。在内存中数据不太安全一旦断电重启就会导致内存数据丢失

2.2、键值对

键值对即key-value的一个对应关系。可以通过名称就找到对应的数据。键值对可以理解为PHP中的变量 通过变量名称即可获取到对应的值

2.3、缓存系统

缓存系统为一个临时存储数据的介质

1、当获取数据时先读取缓存系统中的内容。如果读取到数据则直接使用。否则先查询原始数据(数据库),获取数据之后在将数据保存到缓存系统中

2、当修改数据时先修改原始数据。在更新缓存系统中的内容(修改数据或者删除数据)

2.4、Memcache安装

2.4.1、安装memcache

①关于软件包说明

②创建memcache安装目录

③拷贝安装文件

④运行cmd进入memcache安装目录

先以管理员身份运行cmd

进入memcache安装包目录

2.4.2、以非服务方式安装

2.4.3、以服务方式进行安装

①安装成为服务

②查看自己计算机中的服务

③开启服务

选中服务启动即可

或者使用命令启动

2.4.4、memcache的其他参数

-p:指定memcache的端口号 默认为11211

-d :start/stop:启动或者关闭memcache

-d: install/uninstall:安装/卸载memcache服务

-u:指定memcache运行的用户 只针对Linux下有效

-m:指定memcache最多能够使用的内存大小默认为64M

-c:指定memcache最大的并发连接数 默认为1024个

memcache.exe -help

2.5、Telnet工具使用

①直接在命令行中运行telnet命令

报错说明目前没有安装telnet工具

②打开控制面板进入程序和功能

③点击启用或者关闭Windows功能

④开启telnet客户端

⑤使用telnet工具

当再次执行在命令行中telnet会进入到如下界面

⑥使用telnet连接本机的memcache服务

2.6、演示memcache使用telnet基本使用

3、memcache中的命令

3.1、set指令(重点)

作用:用于设置数据(通过memcache向内存写入数据)

语法:set 键名 0|1(是否需要压缩) 0(有效时间0表示永不过期) 指定数据的字符长度(注意写完之后要回车)

具体的数据

3.1.1、键名说明

键名要求是尽量简短但是又需要表示出含义。键名最多能够支持250个字符。例如使用memcache存储用户信息user_info_id_1

3.1.2、关于是否压缩

0:表示不压缩,不压缩直接将数据保存到内存中,相对于压缩功能不压缩速度更快但是会占用较高的存储空间

1:表示压缩。压缩将数据处理之后再保存到内存中。相对于不压缩功能压缩速度略差但是会占用存储空间会少

3.1.3、关于有效时间

指定数据在内存中保留的时间。属于一个整形数字单位为秒。当值为0表示数据长期保存。

3.1.4、存储的数据

在memcache中只能保存字符串的数据格式。并且数据大小有上限最大能存储1M的数据

3.1.5、演示修改数据

Set指令能够实现数据的添加与修改功能

3.1.6、演示有效时间

3.2、get指令(重点)

作用:用于通过memcache从内存中读取数据

语法:get 键名

3.3、add指令

作用:通过memcache向内存中添加数据

语法:与set指令一模一样

3.4、delete指令

作用:将key对应的数据删除掉

语法:delete 键名

3.5、incr指令

作用:将键名对应的内容进行增加

语法:incr 键名数字

3.6、decr指令

作用:将键名对应的内容进行减少

语法:decr 键名数字

3.8、flush_all指令

作用:清除通过memcache所操作的内存中的数据

语法:flush_all

此命令很危险生成环境下绝对不会使用。一旦使用会造成雪崩效应(多次重启mysql之后会回归正常)。想要处理合适可以使用keepalive软件对memcache服务器进行心跳检测

3.9、stats指令

作用:查看服务器状态

语法:stats

Memcache服务器性能有一个命中率进行衡量

命中率=get_hits/cmd_get*100%

一般memcache命中率在70-90之间都算正常

4、PHP操作memcache

4.1、开启memcache扩展

①先查看phpinfo信息

②下载对应的dll文件

③查看自己的PHP扩展目录所在地址

④拷贝扩展文件到对应的目录下

⑤修改php配置文件

⑥重启apache查看信息

备注:关于memcache的扩展一共是有两套。分别为memcache跟memcached。对于两套扩展都可以通过php操作memcache。只是用法上有一点区别

4.2、使用php操作memcache

①查看文档中说明

②编写代码

③效果

 

5、memcache能够支持的php数据类型

5.1、回顾php中的数据类型

5.1.1、基本数据类型

整形

浮点

字符串

布尔

5.1.2、复合数据类型

数组

对象

5.1.3、特殊数据类型

资源

null

5.2、使用基本数据类型存储数据

①编写代码测试

②查看结果

从上述的结果中得知PHP中的四种基本数据类型都支持

5.3、使用数组数据类型存储

①创建测试代码

②执行后查看结果

③使用原始的telnet工具查看

从上述结果中可知对于PHP中数组数据类型本身memcache不支持。但是由于PHP的扩展在写入数据类型数据时会先转换为字符串。在读取数据时得到结果之后会转换为数组格式

5.4、使用对象数据类型存储

①编写测试代码

②访问查看结果

③通过使用telnet查看

从上述结果中对于memcache本身也不支持对象数据类型。同样是由于php扩展进行序列化操作之后导致可以支持

 

5.5、使用特殊数据类型存储

①代码

②查看效果

 

③查看telnet工具

④再次编写代码测试

从上述结果中发现空数据类型可以支持但是资源不支持。

 

总结:PHP中的数据类型除了资源数据类型之外,其他的数据类型都可以支持。但是在对于其他的数据类型的支持是有PHP扩展实现

Memcache本质是只支持字符串的数据类型

6、memcache的使用场景

6.1、memcache使用场景

1、作为缓存系统使用

2、使用memcache实现session共享

3、作为分布式存储

6.2、分布式存储

6.2.1、分布式存储介绍

将数据保存到不同的memcache服务器中。可以提升memcache性能。并且存储上限也可以突破

6.2.2、Linux下安装memcache服务

①将memcache对应的软件包使用ftp上传

②命令行进入上传目录解压libevent

③进入解压目录执行configure

④安装

⑤回到root目录解压memcache源码包

⑥进入解压目录执行configure

⑦安装

⑧启动memcache服务

⑨检查memcache是否正常启动

⑩关闭防火墙

6.2.3、使用memcache管理软件

memadmin为memcache的管理工具,是使用php编写的工具

①将memadmin源码拷贝到web目录下

②查看用户名与密码

③使用浏览器访问

此步骤使用自己的账户密码登录,如果第二步没有修改用户名与密码都是admin

④添加本机的memcache连接

⑤添加Linux中的memcache连接

⑥开始管理

⑦使用memadmin工具查看数据

6.2.4、实现memcache的分布是存储

①将memcache中数据全部清空

针对两台memcache都执行

②创建代码

④访问查看效果

 

⑤查看memadmin中各服务器中的数据

对于memcache分布式寸存储并不是memcache本身就支持此功能。由于PHP的memcache扩展会自动的对key进行运算决定具体的内容应该操作那一台memcache服务器

6.3、memcache存储session

6.3.1、session的常见存储方式

1、使用文件存储session信息

2、使用数据库存储session信息

3、使用memcache存储session信息

6.3.2、session机制(重点)

6.3.3、修改session机制实现数据库存储

①创建测试数据表

CREATE TABLE `session` (

 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,

 `sessionid` varchar(255) NOT NULL DEFAULT '',

 `data` varchar(255) NOT NULL DEFAULT '',

 PRIMARY KEY (`id`),

 UNIQUE KEY `session` (`sessionid`) USING BTREE

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

②修改session机制查看具体流程

③将session信息保存到数据库中

 

 

 

 

 

 

你可能感兴趣的:(Linux入门)