php缓存的类型总结及用法

admin3年前PHP教程27

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

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

php缓存类型

1、数据缓存:

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

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

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

2、页面缓存:

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

3、时间触发缓存:

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

4、内容触发缓存:

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

5、静态缓存:

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

实例扩展:

Memcached;

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

?

1
2
3
4
5
6
7
8
9
// 初始化
$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();

?

1
2
3
4
5
6
7
8
9
10
// 初始化$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-ask-486836

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

php回溯算法计算组合总和的实例代码

给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说...

php使用composer常见问题及解决办法

composer是PHP中非常优秀的一个包管理工具,可以帮助我们来管理项目所需要依赖的所有包以及插件,也可以用来从packagist中创建一个项目。但是在初次使用中会出现各种各样的问题,现我将别的开发...

如何选择高性能gpu服务器?江西GPU服务器租用教程?

如何选择高性能gpu服务器?当代,无论是生活还是工作,都与网络是分不开的,业余时间,我们喜欢刷刷手机,工作上要与电脑打交道,特别是现在的人工智能领域发展迅速,成为我们生活的另一部分。而这些科技的运作,...

php实现自运行的实例详解

说明1、创建一个PHP示例文件;然后输入“ignore_user_abort();”。2、通过“do{$fp = fopen('test.php',...

Elasticsearch属性单词常用解析说明

一、前言      说实话,刚测试ES的时候,我的内心是崩溃的,好多单词都不知道代表什么意思,只能一边测试,一边查询。看到就赶紧记下来,一天...

GPU服务器是如何运作的泉州GPU服务器的应用

GPU服务器是如何运作的?GPU服务器实际就是一种带有GPU的服务器,提供快速、稳定、灵活的计算,常应用于视频编解码、深度学习、科学计算等各种应用场景。由于其出色的图像处理能力能力和高效的计算性能,G...