内置了数据库自动缓存和缓存清空功能。

基本例子

比如这样的查询:

$phone = 'xxx';
User::where('phone',$phone)->autoCache('find_by_phone',$phone)->find();

以上查询执行完之后,会自动缓存,下次再执行时,不会查询数据库,会从缓存中取数据。
但是不仅如此,我们可以在模型中定义好缓存规则,当这条数据更新时,会自动删除缓存。

class TestGoods extends TimeModel
{
    public static $autoCache = [
        [
            'name'=>'find_by_phone',
            'field'=>'phone'
        ]
    ];

按照以上定义好之后,每当数据新增,更新,删除,软删除恢复,都会自动删除缓存,以保证下一条查询语句是最新的。

用法

指定key

查询操作:

User::autoCache('last_login')->order('id','desc')->find();
// select 也同样生效,select缓存起来的是一个列表

// 以上查询等效于
User::cache('last_login')->order('id','desc')->find();

定义清除规则:

 public static $autoCache = [
     [
        'name'=>'last_login',
     ]
 ];

指定key拼接字段值

查询操作:

$phone = 'xxx';
User::where('phone',$phone)->autoCache('find_by_phone',$phone)->find();
// select 也同样生效,select缓存起来的是一个列表

// 以上查询等效于
User::cache('find_by_phone_'.$phone)->order('id','desc')->find();

定义清除规则:

 public static $autoCache = [
     [
        'name'=>'find_by_phone',
        'field'=>'phone'
     ]
 ];

指定缓存tag

查询操作:

User::page(1)
->limit(15)
->autoCache('user_list',null,'user')
->order('id','desc')
->select();

定义清除规则:

 public static $autoCache = [
     [
        'name'=>'user',
        'type'=>'tag'
     ]
 ];

当定义了以上清除规则时,每当User数据有任何新增、更新、删除等操作时,会自动清除tag为user的缓存。

指定缓存tag拼接字段值

查询操作:

$family_id = 2;
User::page(1)
->limit(15)
->autoCache(null,null,'user',$family_id)
->order('id','desc')
->where('family_id',$family_id)
->select();

// 以上查询的缓存设置等效于
User::cache(null,true,'user_'.$family_id)

定义清除规则:

 public static $autoCache = [
     [
        'name'=>'user',
        'field'=>'family_id',
        'type'=>'tag'
     ]
 ];

每当这条数据触发更新条件时,会自动清除tag名为user_2的缓存,比如还有family_id=1的缓存不会被清除。

authCache

public function autoCache($key = null, $field_value = null, $tag = null,$tag_value = null)
  • 当key为null时,会自动根据Query查询options生成key
  • key会和$field_value自动拼接
  • 当$tag为null时,不会设置缓存tag,并且$tag_value 参数对于key没有意义
  • 当$tag为字符串时,会根据tag_value拼接缓存tag

注意,authCache只会自动缓存数据,不会自动清除缓存,清除缓存需要去模型定义。

原文标题:数据库自动缓存

原文文档:ulthon_admin

原文地址:https://doc.ulthon.com/read/augushong/ulthon_admin/625f9c0ba8885/zh-cn/2.x.html

原文平台:奥宏文档

2.x