php缓存的类型总结及用法

 更新时间:2021年12月31日 08:38:44   作者:青灯夜游  
在本篇文章里小编给大家整理了一篇关于php缓存的类型总结及用法,对此有需要的朋友们可以跟着学习下。

一个网站或者一个应用的标准流程是浏览器向应用服务器发出请求,应用服务器做一些计算和逻辑判断之后再请求数据库,数据库收到请求后在经过计算将数据返回给应用服务器,应用服务器再次计算后把数据返回给浏览器

那么,随着web业务的复杂度和并发量的增加,应用服务器所做的计算和逻辑处理越来越多,而应用服务器的资源是有限的,且数据库每秒接受并处理请求的次数也是有限的。为了在有限的资源提供尽可能多的吞吐量,就是减少计算量,缩短请求流程(减少网络I/O或硬盘I/O)。这时,就用到了缓存(Cache)

php缓存类型

1、数据缓存:

数据缓存:这里所说的数据缓存是指数据库查询PHP缓存机制,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询结果就直接从缓存表或文件中获得。

用的最广的例子看Discuz的搜索功能,把结果ID缓存到一个表中,下次搜索相同关键字时先搜索缓存表。

举个常用的方法,多表关联的时候,把附表中的内容生成数组保存到主表的一个字段中,需要的时候数组分解一下,这样的好处是只读一个表,坏处就是两个数据同步会多不少步骤,数据库永远是瓶颈,用硬盘换速度,是这个的关键点。

2、页面缓存:

每次访问页面的时候,都会先检测相应的缓存页面文件是否存在,如果不存在,就连接数据库,得到数据,显示页面并同时生成缓存页面文件,这样下次访问的时候页面文件就发挥作用了。(模板引擎和网上常见的一些PHP缓存机制类通常有此功能)

3、时间触发缓存:

检查文件是否存在并且时间戳小于设置的过期时间,如果文件修改的时间戳比当前时间戳减去过期时间戳大,那么就用缓存,否则更新缓存。

4、内容触发缓存:

当插入数据或更新数据时,强制更新PHP缓存机制。

5、静态缓存:

这里所说的静态缓存是指静态化,直接生成HTML或XML等文本文件,有更新的时候重生成一次,适合于不太变化的页面,这就不说了。

实例扩展:

Memcached;

是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。

// 初始化
$cache = new Memcache();
$cache->pconnect(127.0.0.1, 11211);
// 写入
$cache->set(CACHE_PREFIX . $key, $value, MEMCACHE_COMPRESSED, $expire);(CACHE_PREFIX 为了避免命名冲突,最好加一个前缀,MEMCACHE_COMPRESSED一个标记,设置为0表示不压缩)
// 读取
$cache->get(CACHE_PREFIX . $key);
// 删除
$cache->delete(CACHE_PREFIX . $key);

Redis

是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。类似的安装好php扩展// 初始化$cache = new Redis();

// 初始化$cache = new \Redis();
$cache->connect(CACHE_HOSTNAME, CACHE_PORT);
// 先检查是否存在,然后写入并设置有效时间
if($cache->exists($key)){  
    $cache->delete(CACHE_PREFIX . $key);
}
$cache->set(CACHE_PREFIX . $key, serialize($value));
$cache->expire(CACHE_PREFIX . $key, $expire);
// 读取
$cache->get(CACHE_PREFIX . $key);

到此这篇关于php缓存的类型总结及用法的文章就介绍到这了,更多相关php缓存有几种类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅析PHP绘图技术

    浅析PHP绘图技术

    本篇文章是对PHP绘图技术进行了详细的分析介绍,需要的朋友参考下
    2013-07-07
  • PHP连接Access数据库的方法小结

    PHP连接Access数据库的方法小结

    有时候我们在开发一些小程序或简单功能的管理系统,又没有mysql数据库的情况下,就可以使用access了,这里介绍下链接方法
    2013-06-06
  • 二招解决php乱码问题

    二招解决php乱码问题

    PHP的乱码问题已经说了N+1遍了,但还是经常看到新手不知道该如何解决php乱码问题,在此本人再重新给总结一下,希望对新手有点帮助
    2012-03-03
  • php统计数组不同元素的个数的实例方法

    php统计数组不同元素的个数的实例方法

    在本篇文章里小编给大家整理的是关于php统计数组不同元素的个数的实例方法以及相关知识点,有需要的朋友们学习下。
    2019-09-09
  • php使用ob_flush不能每隔一秒输出原理分析

    php使用ob_flush不能每隔一秒输出原理分析

    这篇文章主要介绍了php使用ob_flush不能每隔一秒输出原理,较为详细的分析了php使用ob_flush的相关原理与Linux下使用cli方式的使用方法,需要的朋友可以参考下
    2015-06-06
  • PHP实现简单日历类编写

    PHP实现简单日历类编写

    这篇文章主要为大家详细介绍了PHP实现简单日历类编写,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • 关于URL最大长度限制的相关资料查证

    关于URL最大长度限制的相关资料查证

    这篇文章主要介绍了关于URL最大长度限制的相关资料查证,这里记录一下,方便以后使用。
    2014-12-12
  • PHP封装的XML简单操作类完整实例

    PHP封装的XML简单操作类完整实例

    这篇文章主要介绍了PHP封装的XML简单操作类,结合完整实例形式分析了php针对xml文件进行载入、读取及写入相关操作技巧的封装与使用方法,需要的朋友可以参考下
    2017-11-11
  • php字符集转换

    php字符集转换

    本文主要介绍了PHP通过iconv将字符串从GBK转换为UTF8字符集。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • php使用Jpgraph创建折线图效果示例

    php使用Jpgraph创建折线图效果示例

    这篇文章主要介绍了php使用Jpgraph创建折线图效果,结合实例形式分析了php使用Jpgraph绘制折线图的原理、实现步骤与相关操作技巧,需要的朋友可以参考下
    2017-02-02

最新评论