2019独角兽企业重金招聘Python工程师标准>>>

项目中CI缓存适配器的使用
    项目中有若干控制器,这些控制器有一些公共数据,因此,在基控制器类中获取这些数据,为了提高系统性能,使用了缓存系统,采用了CI框架提供的缓存适配器来提供缓存数据的设置与获取。

1.在基类的构造方法中加载CI的缓存适配器

//加载cache适配器$this->load->driver('cache', array('adapter' => 'file'));

第一个参数是加载适配器类型,此处是缓存适配器;第二个参数是数组形式,adapter=>file表示指定文件作为缓存的实现。(也可以指定其它缓存实现,比如apc)

2.在基类的构造方法中加载所有缓存数据,系统中封装了getCommCache()方法,在该方法中,从缓存中获取所有子控制器需要使用的公共数据,代码如下:

public function getCommCache(){//获取导航数据if($this->getCache('nav'))    //如果缓存数据存在{//从缓存中获取数据$this->nav = $this->getCache('nav');}else    //缓存数据不存在{//从数据库获取数据$this->load->model('Mhead');$this->nav=$this->Mhead->get_head();//将该数据设置到缓存$this->setCache('nav',$this->nav,10);//三个小时}。。。。。(其它数据设置与获取类似)}

以上代码中getCache、setCache方法是对CI缓存适配器方法的封装,如下:

public function setCache($id,$data,$time=null){$this->cache->save($id, $data, $time);}public function getCache($id){return  $this->cache->get($id);}

其中,有关的几个缓存适配器的方法为:
    (1)设置数据到缓存系统中:

 $this->cache->save('cache_item_id[string]', 'data_to_cache[mix]',[time[int]]);

第一个参数为缓存数据名,第二个参数为需要缓存的数据,第三个参数可选,是缓存有效时间默认60秒。例如,需要将某段字符串作为缓存数据:

  $data = "this is the common text";$this->cache->save('commText',$data,60);

(2)从缓存中获取数据:

 $foo = $this->cache->get('my_cached_item');

参数为设置缓存时的ID,返回值就是获取到的缓存数据:

  $Text = $this->cache->get('commText');

除此之外,还包括删除某个缓存数据:$this->cache->delete('cache_item_id');清空所有缓存:$this->cache->clean()等等。

暂时这么多,以后再补充。。。

转载于:https://my.oschina.net/u/1472370/blog/220726

项目中CI缓存适配器的使用相关推荐

  1. 谈谈MVC项目中的缓存功能设计的相关问题

    今天这一篇文章我来谈一谈在MVC 3项目中的缓存功能,以及针对缓存的一些设计上的考量,给大家参考参考 前言 为什么需要讨论缓存?缓存是一个中大型系统所必须考虑的问题.为了避免每次请求都去访问后台的资源 ...

  2. 缓存详解-在java项目中使用缓存

    目录 一.概述 二.java常用的缓存 三.使用缓存将会面临的一些问题 穿透 雪崩 击穿 总结 三.缓存淘汰策略 缓存淘汰 在Spring项目中优雅的实现缓存 二级缓存推荐的实现 一.概述 在java ...

  3. CJCMS系列---说说项目中的缓存实现(1)

    缓存者,临时文件交换区也.主要就是方便查找,提高查找效率(效率在于读内存速度比读硬盘快).  大多数的项目的缓存都是通过设定过期时间来做的,可是我对于这样的替换策略不以为然,而且会导致混乱. 有人说: ...

  4. 为什么要在项目中使用缓存呢?

    用缓存主要是两个用途,高性能和高并发 高性能 假如有1000个请求要去查询同一条数据,如果1000个请求直接去数据库中查找,而且这个查找sql比较耗时,那么这1000个请求每个都会很慢. 如果在查询系 ...

  5. php中怎么让图片没有缓存,关于项目中图片缓存的问题

    之前用的是iis所以可能没有这些问题,后来换了nginx之后发现图片缓存问题很严重,本项目用的是thinkphp5框架: 浏览器.runtime.session.cookie.加参数,后台,所有缓存都 ...

  6. 分桶策略清理SpringCache中的缓存

    背景介绍 我们使用SpringCache框架 + Redis来实现项目中的缓存实现,它能实现自动对数据缓存,也可以自动清理过期的缓存.大多数情况下,它都运行非常好. 这是因为我们需要缓存的数据,通常都 ...

  7. cd返回上一 git_PHP项目中应用CI/CD的碎碎恋!

    点击上方"架构艺术",每日干货! 作者:晶晶 原文链接:https://blog.jjonline.cn/linux/239.html DevOps漫谈:谈一谈在PHP项目如何应用 ...

  8. 在项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?

    项目中缓存是如何使用的? 这个,需要结合自己项目的业务来. 为什么要用缓存? 用缓存,主要有两个用途:高性能.高并发. 高性能 假设这么个场景,你有个操作,一个请求过来,吭哧吭哧你各种乱七八糟操作 m ...

  9. 在项目中缓存是如何使用的?

    项目中缓存是如何使用的? 这个,需要结合自己项目的业务来. 为什么要用缓存? 用缓存,主要有两个用途:高性能.高并发. 高性能 假设这么个场景,你有个操作,一个请求过来,吭哧吭哧你各种乱七八糟操作 m ...

最新文章

  1. 滑坡的剖面图怎么用计算机绘制,cad怎么画滑坡剖面
  2. qt vs 不出来dos窗口_VS嵌入QT后,建立QT工程后printf和cout无效,无法产生控制台应用程序窗口,需设置工程属性...
  3. 机器学习入门数学书籍推荐(部分资源有下载链接)
  4. 通过APNIC获取各运营商IP网段
  5. OSG使用更新回调来更改模型
  6. nodejs shell交互_nodejs调用shell
  7. [Abp vNext 源码分析] - 4. 工作单元
  8. Java 获取linux根目录下的文件夹_Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux...
  9. JAVA常用算法一:二分查找【递归 or 非递归】
  10. oracle apex表隐藏,oracle-apex 处理表格形式
  11. 推荐一个自动写paper的软件,让IEEE吐血泪奔
  12. 用excel做logistic回归分析_利用SPSS进行Logistic回归分析
  13. 【统计学笔记】正态概率图与Q-Q图
  14. 关于bootbox.js自定义弹出框样式,如修改宽度等
  15. SPSS篇—方差分析
  16. Tushare实战分析美国国债收益率与利率的关系
  17. Java实现扫码枪二维码自动跳转网页(基于键盘监听)
  18. Docker安装PHP-FPM5.6 (自带redis扩展,Mysql扩展,GD库扩展(支持JEPG))
  19. 操作系统的分类有哪些?
  20. Visual Studio 2022调节字体大小

热门文章

  1. leetcode63 不同路径II
  2. 算法(21)-leetcode-剑指offer5
  3. boost::interprocess::named_mutex的翻译和学习
  4. 为什么程序员要尽量少写代码
  5. 过度扩容 A股“虚胖”
  6. 25岁肥胖!美研究:晚年恐出现病态肥胖
  7. 中国智慧VS西方智慧-看中国IT风云与IT产业怪状
  8. 去除List集合中的重复值(四种好用的方法)
  9. 吴裕雄--天生自然 高等数学学习:多元函数微分学的几何应用
  10. Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程