キャッシュ (チェーン操作 15)


キャッシュは、select、find、value、column メソッドとその派生メソッドに使用できます。キャッシュ メソッドを使用した後は、キャッシュの有効期間内にデータベース クエリ操作が再度実行されることはありません。 , ただし、キャッシュは直接取得されます。データ キャッシュ内のデータについては、データ キャッシュの種類と設定についてはキャッシュのセクションを参照してください。

次は例です。たとえば、次のように find メソッドにキャッシュ メソッドを使用します:

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

最初のクエリ結果がキャッシュされ、同じデータに対する 2 番目のクエリがキャッシュされます。データベースに再度クエリを実行する必要がなく、キャッシュ内のコンテンツが直接返されます。

デフォルトでは、キャッシュ有効期間はデフォルトのキャッシュ構成パラメータによって決定されますが、キャッシュ方法は個別に指定できます。例:

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

は、クエリのキャッシュ有効期間を意味します結果は60秒です。

キャッシュ メソッドではキャッシュ識別子を指定できます:

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

クエリ キャッシュ識別子を指定すると、クエリ キャッシュをより効率的に行うことができます。

このように、クエリ キャッシュ データは、\think\Cache クラスを通じて外部から直接取得できます。例:

$result = Db::table('user')->cache('key',60)->find();
$data = \think\facade\Cache::get('key');

キャッシュ メソッドは、キャッシュ タグの設定をサポートしています。例:

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

自動キャッシュ更新

ここでの自動キャッシュ更新とは、データが更新または削除されるとキャッシュが自動的に消去されることを意味します (自動的に再実行されます)。次回取得時にキャッシュされます)。

データを削除または更新するとき、同じキーのキャッシュ メソッドを呼び出すと、キャッシュが自動的に更新 (クリア) されます。例:

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

最後にクエリされたデータは削除されません。クエリ キャッシュの影響については、クエリと更新または削除が同じキャッシュ識別子を使用して、キャッシュが自動的にクリアされるようにしてください。

主キーを使用してクエリと更新 (または削除) を行う場合、キャッシュ識別子を指定しなくてもキャッシュは自動的に更新されます

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