cache

cache方法用于查詢緩存操作,也是連貫操作方法之一。

cache可以用于select、find、valuecolumn方法,以及其衍生方法,使用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

文檔
目錄

深色
模式

切換
寬度