当前位置:主页 > PHP开发 > PHP基础 >

什么是memcache详细教程

栏目:PHP基础 来源: 微信小程序开发网 阅读: 2016-12-13
  用最简单的一句概括memcache:是于提高网站访问速度的分布式缓存系统。

  上面虽然简单的一句话但是包括的意思有:一是memcache是用来提高访问网站速度的,因为,如果直接发访问网站数据库的话速度相对比较慢,特别是一个网站的流量巨大时,给服务器造成巨大的压力;有一种解决方法可以比较访问数据库快速就是把直接访问硬盘,例如,把数据库从数据库表中查询出来,然后,放到硬盘里面这样访问比较程序直接访问数据库要快很多,但是,这还不是最快的。

  二是memcache是一种缓存系统技术,也是一种缓存软件需要下载安装到服务器上面。

  官方网址是:http://www.memcached.org

  通过上面的简介不足以深入的了解memcache,如果看官方文档因为专业术语比较多,所以,学习起来会非常难懂,让我们一步一步来揭开memcache神密的面纱,先让我们来看看在没有使用memcache前程序是如何运执行的。

  程序在报务器上面执行流程如下图所示:



  假设程序phpos.php在硬盘上面查询数据库表,则把要查询的代码放到内存中,然后,通过内存把执行代码放到cup里面执行查询,查询完后cup把查询的结果显示出来,例如,通过浏览器显示出来,当然,这里把查询的结果也放到内容后,然后,由cup执行查询出来的结果。

  像上面查询其实是用到了内存,相对来说是比较快的,但是,如果直接查询数据库表的话就比较直接查询硬盘要慢。

 查询速度快慢对比:查询数据库表最慢;查询硬盘速度比较快;直接查询内存则最快;

  还有没有比较查询内存更快的?其实,使用寄存器最快,但是,非常贵别说个人就是一般的公司也用不起,以后可能技术突破了就有可能普及。

  由上分析可以知道,如果我们把查询的内容都放在内存中不是非常好,确实是这样但是内存也有一个相比数据库或硬盘来说致命的弱点就是不能长久保存,而且,内存的价格也比较硬盘贵的多了,所以,把所有的数据都放到内存中是不现实的,例如,一个学校建立了一个学生入学数据表,放到内容中只要关机重启就这个表就会消失。

  故内存只放一些频繁使用的数据,那些重要的需要长久保存的数据则保存到数据库表或硬盘上面。

  如何把数据保存到内存上里面?获取删除、修改内存上面的数据?如何操作内存上面的数据等,这些使用要求就是通过memcache来实现的,memcache通过一张hash表来对内存里面的数据进行管理。表或硬盘里面有增、删、改和查等操作,在内容中也可以对数据进行增、删除、改和查等操作,这些都是由memcache来实现的。


MemCache缓存原理图:



  当用户第一次查询(以查询为例子)数据库表时,是直接查询数据库表的查询完后,memcache就会把查询的结果放到内存中,然后,查询的内容返回给用户,也就是上图中线路1,当用户第二次进行了同样的查询后,程序会先查找内存是不是有同样的数据,若有则直接从内存中查询出数据,否则,再次从数据库中查询需要的数据,memcache会跟第一次一样执行上面的操作,会把第次没有的内容放到内存中。

  若是另外一个用户也进行了跟上面的用户查询的一样的内容,同样也不会去再从数据库里面查询数据而是从内容中查询,这相当于把直接从内存中查询数据,要比较从数据库或硬盘上面查询数据快很多,这就是memcache实现的原理,一般的大型网站都使用memcached缓存技术来提高网站访问速度。

  从上面也可以看出memcache是一个软件,一个管理内存的软件,也是一种缓存技术,memcache是在内存中是对键key、值value对的方式来管理使用内存。如何使用memcache会在以后的教程中详细讲解,本教程称对memcache的原理及相关知识有一个了解。