thinkphp缓存使用

Wesley13
• 阅读 736

thinkphp缓存使用

一、总结

1、这里的缓存不是指的缓存的页面,而是cache,如果你缓存了一个数组,那么你就可以取出这个数组里面的数据进行使用,用法性质和cookie和session有点像

2、缓存的数据可以在thinkphp的runtime下的cache文件夹下面找到

3、用法:可以用Cache类也可以用助手函数,有设置cache,取出cache,删除cache,清空cache等几个常见操作

4、使用场景:我明白对不同用户如果看到的页面是一样的,而数据又是从数据库取得,那么久可以用cache来保存那份数据才减少频繁从数据库中取数据

5、疑惑一:如果数据是对不同用户看到的不一样,用cache怎么解决

6、疑惑二:或者cache存储的数据有变动(原数据被修改了),如果还是从cache中读取数据,那么读取的数据还是修改前的啊,这样就不对了

7、设置cache,直接是键值对的形式,也很好理解

8、取出cache,就是普通的直接取值啊,本质是数组类型的变量

9、删除cache,还是键值对的形式,和设置值一样,只不过值是空值NULL

10、清空cache,Cache类的clear()方法

11、使用cache,先判断有没有相应cache,有怎么操作,没有怎么操作

二、缓存

0、缓存简介

a) 缓存的作用:

减少数据库压力

用户交互比较

b) TP对缓存的支持

支持的缓存类型包括file、memcache、wincache、sqlite、redis和xcache。

c) 缓存设置(C:\AppServ\www\tp5\application\config.php)

'cache' => [

// 驱动方式

'type' => 'File',

// 缓存保存目录

'path' => CACHE_PATH,

// 缓存前缀

'prefix' => '',

// 缓存有效期 0表示永久缓存

'expire' => 0,

],

d) 使用

1、设置缓存

Cache::set(名字,值,时间);

cache(名字,值,时间);

# 返回值 如果设置成功 true

# 如果设置失败 false

2、读取缓存

Cache::get(名字);

cache(名字);

# 返回值 如果获取成功 获取到的数据

# 如果获取失败 false

3、删除缓存

Cache::rm('UserData');

cache('UserData',NULL);

# 返回值 删除成功 true

# 删除失败 false

4、清空缓存

Cache::clear();

# 返回值 清空缓存成功 true 否则 false

5、使用缓存

// 从缓存中获取数据

if ($data=cache('UserData')) {

// 如果数据存在

}else{

// 如果缓存中没有数据

$data=Db::table('User')->select();

cache('UserData',$data,20);

}

点赞
收藏
评论区
推荐文章
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Easter79 Easter79
3年前
springboot使用redis缓存
Redis优势本文部分步骤继承于springboot使用cache缓存,如果有不清楚的,请移驾springboot使用cache缓存(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.jianshu.com%2Fp%2Fe9b40acb2993)性
Souleigh ✨ Souleigh ✨
3年前
前端性能优化 - 雅虎军规
无论是在工作中,还是在面试中,web前端性能的优化都是很重要的,那么我们进行优化需要从哪些方面入手呢?可以遵循雅虎的前端优化35条军规,这样对于优化有一个比较清晰的方向.35条军规1.尽量减少HTTP请求个数——须权衡2.使用CDN(内容分发网络)3.为文件头指定Expires或CacheControl,使内容具有缓存性。4.避免空的
Stella981 Stella981
3年前
Spring Cache 和 Apache Shiro整合的超级深坑
历时1天,跟踪了一天springaop的源代码。最后在google上找到了答案。写个笔记记录,希望遇到相同问题的同学,可以避免这个问题。问题概述项目到了尾声,需要使用缓存进行优化,项目中使用了shiro技术作为权限框架,springcache注解形式进行缓存。发现cache没有起到作用,匪夷所思。于是跟踪springaop的源
Wesley13 Wesley13
3年前
J2Cache 没有 Redis 也可以实现多节点的缓存同步
J2Cache是一个两级的缓存框架,第一级是基于内存的数据缓存,支持caffeine、ehcache2和ehcache3,二级缓存只支持redis。在某些生产环境中你可能没有redis,但是又希望多个应用节点间的缓存数据是同步的。配置的方法很简单:1\.首先关闭二级缓存(使用none替代redis)j2cache
Wesley13 Wesley13
3年前
J2Cache 和 JetCache 框架有何不同?
从软件名称看还有点像呢?但这两者完全不是一回事!JetCache是阿里的一个基于Java的缓存系统封装,提供统一的API和注解来简化缓存的使用。也就是说这个项目主要的目的是为了让所有的缓存框架通过JetCache实现统一的接口调用,让你不需要关心底层缓存的API细节。这是设计模式层面上的封装。而J2Cache完全不同,
Stella981 Stella981
3年前
Play 2.0 用户指南 - 使用缓存 -- 针对Scala开发者
ThePlay缓存API      Play默认使用EHCache实现缓存API。你也可以自定义插件实现。   访问缓存API   缓存API由play.api.cache.Cache提供。它需要一个已注册的缓存插件。   注意:该API有意最小化
Easter79 Easter79
3年前
TP5配置操作redis
配置方式如下:'cache'//使用复合缓存类型'type''complex',//默认使用的缓存'default'//驱动方式'
京东云开发者 京东云开发者
6个月前
CaffeineCache Api介绍以及与Guava Cache性能对比| 京东物流技术团队
一、简单介绍:CaffeineCache和Guava的Cache是应用广泛的本地缓存。在开发中,为了达到降低依赖、提高访问速度的目的。会使用它存储一些维表接口的返回值和数据库查询结果,在有些场景下也会在分布式缓存上再加上一层本地缓存,用来减少对远程服务和数
IT全栈视野 IT全栈视野
3个月前
在 Go 语言中,实现缓存的多种方式
第1种,使用sync.Map代码示例packagemainimport("fmt""sync""time")funcmain()varcachesync.Map//存储数据到缓存cache.Store("key1","value1")cache.Store