cache
cache方法用于查詢緩存操作,也是連貫操作方法之一。
cache可以用于select
、find
、value
和column
方法,以及其衍生方法,使用cache
方法后,在緩存有效期之內(nèi)不會再次進行數(shù)據(jù)庫查詢操作,而是直接獲取緩存中的數(shù)據(jù),關于數(shù)據(jù)緩存的類型和設置可以參考緩存部分。
下面舉例說明,例如,我們對find方法使用cache方法如下:
Db::table('think_user')->where('id=5')->cache(true)->find();
第一次查詢結果會被緩存,第二次查詢相同的數(shù)據(jù)的時候就會直接返回緩存中的內(nèi)容,而不需要再次進行數(shù)據(jù)庫查詢操作。
默認情況下, 緩存有效期是由默認的緩存配置參數(shù)決定的,但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
類直接獲取查詢緩存的數(shù)據(jù),例如:
$result = Db::table('think_user')->cache('key',60)->find();
$data = \think\Cache::get('key');
cache
方法支持設置緩存標簽,例如:
Db::table('think_user')->cache('key',60,'tagName')->find();
緩存自動更新
這里的緩存自動更新是指一旦數(shù)據(jù)更新或者刪除后會自動清理緩存(下次獲取的時候會自動重新緩存)。
當你刪除或者更新數(shù)據(jù)的時候,可以使用cache方法手動更新(清除)緩存,例如:
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]);
最后查詢的數(shù)據(jù)不會受第一條查詢緩存的影響,確保查詢和更新或者刪除使用相同的緩存標識才能自動清除緩存。
如果使用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);
最后查詢的數(shù)據(jù)會是更新后的數(shù)據(jù)。
文檔最后更新時間:2018-04-26 09:42:13
未解決你的問題?請到「問答社區(qū)」反饋你遇到的問題