zoukankan      html  css  js  c++  java
  • tp5.1 cache控制器查询缓存数据(select、find)

    cache可以用于selectfindvaluecolumn方法,以及其衍生方法,使用cache方法后,在缓存有效期之内不会再次进行数据库查询操作,而是直接获取缓存中的数据,关于数据缓存的类型和设置可以参考缓存部分。

    下面举例说明,例如,我们对find方法使用cache方法如下:

    Db::table('think_user')->where('id',5)->cache(true)->find();
    

      

    第一次查询结果会被缓存,第二次查询相同的数据的时候就会直接返回缓存中的内容,而不需要再次进行数据库查询操作。

    默认情况下, 缓存有效期是由默认的缓存配置参数决定的,但cache方法可以单独指定,例如:

    Db::table('think_user')->cache(true,60)->find();
    // 或者使用下面的方式 是等效的
    Db::table('think_user')->cache(60)->find();
    

      

    表示对查询结果的缓存有效期60秒。

    cache方法可以指定缓存标识:

    Db::table('think_user')->cache('key',60)->find();
    


      指定查询缓存的标识可以使得查询缓存更有效率。

      这样,在外部就可以通过 hinkCache类直接获取查询缓存的数据,例如:

    $result = Db::table('think_user')->cache('key',60)->find();
    $data = 	hinkCache::get('key');
    

      cache方法支持设置缓存标签,例如:

    Db::table('think_user')->cache('key',60,'tagName')->find();
    

      

    缓存自动更新

    这里的缓存自动更新是指一旦数据更新或者删除后会自动清理缓存(下次获取的时候会自动重新缓存)。

    当你删除或者更新数据的时候,可以调用相同keycache方法,会自动更新(清除)缓存,例如:

    Db::table('think_user')->cache('user_data')->select([1,3,5]);
    Db::table('think_user')->cache('user_data')->update(['id'=>1,'name'=>'thinkphp']);
    Db::table('think_user')->cache('user_data')->select([1,5]);
    

      

    最后查询的数据不会受第一条查询缓存的影响,确保查询和更新或者删除使用相同的缓存标识才能自动清除缓存。

    如果使用find方法并且使用主键查询的情况,不需要指定缓存标识,会自动清理缓存,例如:

    Db::table('think_user')->cache(true)->find(1);
    Db::table('think_user')->update(['id'=>1,'name'=>'thinkphp']);
    Db::table('think_user')->cache(true)->find(1);
    

      最后查询的数据会是更新后的数据。

    官方文档:https://www.kancloud.cn/manual/thinkphp5_1/354019

  • 相关阅读:
    ping 介绍
    密码学系列——简介密码学
    ActiveMQ c# 系列——进阶实例(三)
    转:LVS简介
    口罩与mask------看东西方文化差异
    Java设计模式之单利模式(Single Pattern)
    Cadence OrCAD Cpature创建Title Block
    终极干货,数组去重且显示每一个数据重复的次数
    LeetCode 64. 最小路径和 | Python
    LeetCode 剑指 Offer 11. 旋转数组的最小数字 | Python
  • 原文地址:https://www.cnblogs.com/T8888/p/13297385.html
Copyright © 2011-2022 走看看