ThinkPHP 缓存技术详解 使用大S方法

如果没有缓存的网站是百万级或者千万级的访问量,会给数据库或者服务器造成很大的压力,通过缓存,大幅减少服务器和数据库的负荷,假如我们把读取数据的过程分为三个层,第一个是访问层,第一个是缓存层,第三个是数据库存取层,如果没有缓存层,访问层是直接从数据库存取层读取数据,而设置缓存后,访问层不再是直接在数据库存取层读取,而是从缓存层读取数据.

我们做个简单的对比,假设一个页面,在一个小时可被访问100万次,如果这个页面每次被访问的时候,都直接读取数据库后再编译生成,在一个小时内将会重复性的生成100万次,而如果这个页面被周期性的缓存10分钟,也就是每间隔10分钟缓存数据才会被生成一次,一个小时内只会被生成6次,两种方式一对比,效果明显,两种比较下服务器负荷的压力比差别十几万倍以上,缓存技术将使得网站负载在高峰期游刃有余.

thinkphp的缓存方式有许多种,如File、Apachenote、Apc、Eaccelerator、Memcache、Shmop、Sqlite、Db、Redis和Xcache,现在我来说一下File缓存。

Thinkphp缓存文件的配置
Home是我建立的前台项目,在Home\Conf\config.php找到缓存的配置文件,配置如下:
代码如下:
<?php
   return array(
   ‘DB_TYPE‘=>‘mysql‘,
   ‘DB_HOST‘=>‘127.0.0.1‘,
  ‘DB_NAME‘=>‘w3note‘,
   ‘DB_USER‘=>‘root‘,
  ‘DB_PWD‘=>‘123456‘,
  ‘DB_PORT‘=>‘3306‘,
  ‘DB_PREFIX‘=>‘w3_‘,
  ‘DATA_CACHE_TYPE‘=>‘file‘,//设置缓存方式为file
  ‘DATA_CACHE_TIME‘=>‘600‘,//缓存周期600秒
 );
 ?>

Thinkphp缓存函数的使用
在thinkphp中,我喜欢使用快捷缓存函数S()进行缓存,其用法如下:
代码如下:
S(‘data‘,$Data);//使用data标识缓存$Data数据
S(‘data‘,$Data,600);// 缓存$Data数据600秒
 $Data = S(‘data‘);// 获取缓存数据
S(‘data‘,NULL);// 删除缓存数据

 下面是是前台项目控制器的完整代码:
代码如下:
<?php
 // 本类由系统自动生成,仅供测试用途
  class IndexAction extends Action{
    public function index(){
        //如果有缓存,则读取缓存数据
        //如果没有缓存,则读取数据库当中的数据放入缓存
        $lists=S(‘lists‘);
        if(emptyempty($lists)){
          $news=M(‘news‘);
          $lists=$news->select();
          S(‘lists‘,$lists,600);
          echo ‘这是直接读取数据库的数据‘;
           }
        dump($list);
 ?>

访问http://127.0.0.1/Home/index.php/Index/index 输出,这是直接读取数据库的数据:
代码如下:
array(10) {
   [0] => array(12) {
     ["id"] => string(1) "1"
     ["catid"] => string(2) "13"
     ["title"] => string(4) "thinkphp的缓存技术"
     ["content"] => string(8) "thinkphp的缓存技术"
     ["tags"] => string(4) "缓存"
     ["thumb"] => string(0) ""
     ["description"] => string(7) "thinkphp的缓存技术"
     ["inputtime"] => string(10) "1348370202"
     ["posid"] => string(1) "1"
     ["ord"] => string(1) "2"
     ["hits"] => string(1) "1"
     ["status"] => string(1) "1"
 }

说明,第一次运行时,会打印出如上面所示信息,刷新一下页面后,少了“ 这是直接读取数据库的数据",说明读取的是先前生成的缓存数据.

原文地址:https://www.cnblogs.com/zc290987034/p/9240077.html

时间: 2024-11-05 20:44:07

ThinkPHP 缓存技术详解 使用大S方法的相关文章

DiskLruCache硬盘缓存技术详解

上次讲了使用内存缓存LruCache去加载很多图片而不造成OOM,而这种缓存的特点是在应用程序运行时管理内存中的资源(图片)的存储和释放,如果LruCache中有一张图片被释放了,再次加载该图片时需要重新从网络上下载下来,这就显得废流量不说,而且费时,网络不好的状况下用户需要等待,而且在没有网络的情况下不会显示任何数据. 那么怎样才能解决这种情况呢?答案就是加入硬盘缓存DiskLruCache. 1.什么是硬盘缓存呢? 顾名思义,就是把从网络上加载的数据存储在本地硬盘上,当再次加载这些数据时候,

php 面试必备:各种缓存技术详解

这门课程以电商网站为例,通过具体场景模块实战,让你更系统的掌握缓存原理.使用场景等相关知识,帮助你构建完整的缓存知识体系,胜任实际开发中缓存的处理,提升代码性能!    从原理到场景 系统讲解PHP缓存技术,PHP缓存视频教程包括文件缓存.内存数据库之Memcached.内存数据库之Redis.浏览器缓存和应用程序缓存    PHP精品缓存实战视频教程,PHP面试必考题目:缓存机制,PHP从底层研究缓存到实战缓存视频教程带源码. 原文地址:https://www.cnblogs.com/lxwp

CDN技术详解及实现原理

CDN技术详解 一本好的入门书是带你进入陌生领域的明灯,<CDN技术详解>绝对是带你进入CDN行业的那盏最亮的明灯.因此,虽然只是纯粹的重点抄录,我也要把<CDN技术详解>的精华放上网.公诸同好. 第一章    引言    “第一公里”是指万维网流量向用户传送的第一个出口,是网站服务器接入互联网的链路所能提供的带宽.这个带宽决定了一个 网站能为用户提供的访问速度和并发访问量.如果业务繁忙,用户的访问数越多,拥塞越严重,网站会在最需要向用户提供服务时失去用户.(还有“中间一公里” 和

J2EE学习篇之--JQuery技术详解

前面我们讲解了的J2EE的技术都是服务端的技术,下面我们来看一下前端的一些开发技术,这一篇我们来看一下jQuery技术 简介: jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入其team. jQuery是继prototype之后又一个优秀的Javascript框架.其宗旨是--WRITE LESS,DO MORE,写更少的代码,做更多的事情. 它是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏

Zookeeper技术:分布式架构详解、分布式技术详解、分布式事务

一.分布式架构详解 1.分布式发展历程 1.1 单点集中式 特点:App.DB.FileServer都部署在一台机器上.并且访问请求量较少 1.2? 应用服务和数据服务拆分 ?特点:App.DB.FileServer分别部署在独立服务器上.并且访问请求量较少 1.3? 使用缓存改善性能 ?特点:数据库中频繁访问的数据存储在缓存服务器中,减少数据库的访问次数,降低数据库的压力 1.4 应用服务器集群 ?特点:多台应用服务器通过负载均衡同时对外提供服务,解决单台服务器处理能力上限的问题 1.5 数据

实现高性能纠删码引擎 | 纠删码技术详解(下)

作者介绍: 徐祥曦,七牛云工程师,独立开发了多套高性能纠删码/再生码编码引擎.柳青,华中科技大学博士,研究方向为基于纠删码的分布式存储系统. 前言: 在上篇<如何选择纠删码编码引擎>中,我们简单了解了 Reed-Solomon Codes(RS 码)的编/解码过程,以及编码引擎的评判标准.但并没有就具体实现进行展开,本篇作为<纠删码技术详解>的下篇,我们将主要探讨工程实现的问题. 这里先简单提炼一下实现高性能纠删码引擎的要点:首先,根据编码理论将矩阵以及有限域的运算工程化,接下来主

Protocol Buffer技术详解(语言规范)

Protocol Buffer技术详解(语言规范) 该系列Blog的内容主体主要源自于Protocol Buffer的官方文档,而代码示例则抽取于当前正在开发的一个公司内部项目的Demo.这样做的目的主要在于不仅可以保持Google文档的良好风格和系统性,同时再结合一些比较实用和通用的用例,这样就更加便于公司内部的培训,以及和广大网友的技术交流.需要说明的是,Blog的内容并非line by line的翻译,其中包含一些经验性总结,与此同时,对于一些不是非常常用的功能并未予以说明,有兴趣的开发者

红帽Linux故障定位技术详解与实例(2)

红帽Linux故障定位技术详解与实例(2) 2011-09-28 14:26 圈儿 BEAREYES.COM 我要评论(0) 字号:T | T 在线故障定位就是在故障发生时, 故障所处的操作系统环境仍然可以访问,故障处理人员可通过console, ssh等方式登录到操作系统上,在shell上执行各种操作命令或测试程序的方式对故障环境进行观察,分析,测试,以定位出故障发生的原因. AD:2014WOT全球软件技术峰会北京站 课程视频发布 3.内核故障情形及处理 (1)内核panic panic是内

浏览器缓存机制详解

对于浏览器缓存,相信很多开发者对它真的是又爱又恨.一方面极大地提升了用户体验,而另一方面有时会因为读取了缓存而展示了"错误"的东西,而在开发过程中千方百计地想把缓存禁掉.那么浏览器缓存究竟是个什么样的神奇玩意呢? 什么是浏览器缓存: 简单来说,浏览器缓存就是把一个已经请求过的Web资源(如html页面,图片,js,数据等)拷贝一份副本储存在浏览器中.缓存会根据进来的请求保存输出内容的副本.当下一个请求来到的时候,如果是相同的URL,缓存会根据缓存机制决定是直接使用副本响应访问请求,还是