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();


  指定查詢緩存的標識可以使得查詢緩存更有效率。

  這樣,在外部就可以通過\think\Cache類直接獲取查詢緩存的數據,例如:

$result = Db::table('think_user')->cache('key',60)->find();
$data = \think\Cache::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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM