PHP缓存类型有哪一些,什么场景使用
Admin 2022-08-04 群英技术资讯 952 次浏览
一个网站或者一个应用的标准流程是浏览器向应用服务器发出请求,应用服务器做一些计算和逻辑判断之后再请求数据库,数据库收到请求后在经过计算将数据返回给应用服务器,应用服务器再次计算后把数据返回给浏览器
那么,随着web业务的复杂度和并发量的增加,应用服务器所做的计算和逻辑处理越来越多,而应用服务器的资源是有限的,且数据库每秒接受并处理请求的次数也是有限的。为了在有限的资源提供尽可能多的吞吐量,就是减少计算量,缩短请求流程(减少网络I/O或硬盘I/O)。这时,就用到了缓存(Cache)
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);
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
有很多小伙伴会遇到代码空行特别多,但是一行一行删除肯定很烦躁,这时候就需要用到批量删除空行。怎么批量删除空行呢?我的办法是用正则把所有空行找到,然后一键全部替换。
这篇文章主要介绍了PHP数组遍历的几种常见方式,结合实例形式总结分析了php数组遍历相关的循环、指针、数组函数等操作技巧,需要的朋友可以参考下
PHP7栏目讲解php7.0.X添加Sqlserver扩展的方法步骤,有需要的朋友可以看看,大家可以学习讨论。
php查询mysql表名字的方法:首先连接服务器,代码为【die("Connection failed: " . mysql..】;然后选择数据库,代码为【while($row = mysql_fetch_array($result))】。
laravel gulp出错的解决办法:1、打开终端命令窗口;2、通过执行“$ npm rebuild node-sass”命令即可解决Gulp命令出错问题。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008