对TP5数据库缓存cache的一些思考

最近在优化代码的时候,突然想起来TP5的数据库操作中有个cache,之前也用过,印象里就是在缓存时间内,请求的速度会大大加快,但是修改数据会导致不能及时更新。当初还比较年轻,没有深入去搞清楚,只是不再使用cache了而已,现在刚好有机会,就来稍微学一学吧。

很可惜,不论是官方文档还是网上搜索出来的结果,基本上都只是告诉我们如何去使用它,完全没有说到它的工作原理之类的,无奈,只能去慢慢读源码了。

首先让我感到疑惑的是,这个cache和我们平常用的缓存Cache有什么区别?

如果单单从功能上看的话,好像两者没有任何区别,都能设置key值和有效期,以及打标签也都支持。随后我做了个实验,手动设置key名,然后用cache()助手函数去读取,结果如我所料,读取出来的结果果然是select的结果。

$result = db('my_table')->where($where)->cache('key',10)->select();
var_dump(cache('key'));  //结果和$result一样

不过实验归实验,还是得去源码里看看具体是如何实现的。

进入/thinkphp/library/think/db/Query.php中,找到cache方法,可以看到,这里只是设置了属性,真正的使用还不在这里,还得去select、find、value、column里面看。

//源码太长了,就不一一复制了
public function cache($key = true, $expire = null, $tag = null)
{
   
    // 增加快捷调用方式 cache(10) 等同于 cache(true, 10)
    if ($key instanceof \DateTime || (is_numeric($key) && is_null($expire))) {
   
        $expire = $key;
        $key    = true;
    }
    if (
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值