濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 在 Laravel 6 中緩存數(shù)據(jù)庫(kù)查詢結(jié)果的方法

在 Laravel 6 中緩存數(shù)據(jù)庫(kù)查詢結(jié)果的方法

熱門標(biāo)簽:山西回?fù)芡夂粝到y(tǒng) 岳陽(yáng)外呼型呼叫中心系統(tǒng)在哪里 揚(yáng)州地圖標(biāo)注app 昭通辦理400電話 騰訊外呼管理系統(tǒng) 河南電銷卡外呼系統(tǒng)哪家強(qiáng) 百應(yīng)電話機(jī)器人服務(wù) 山西探意電話機(jī)器人 青島語(yǔ)音外呼系統(tǒng)招商

在加快應(yīng)用程序速度方面,緩存可能是最有效的。Laravel 預(yù)先安裝了緩存驅(qū)動(dòng)程序。因此你可以直接使用 Redis, Memcached 或者使用本地文件進(jìn)行緩存操作。Laravel 附帶了此功能。

這一次,我們將討論直接從模型緩存 Eloquent 查詢,從而使數(shù)據(jù)庫(kù)緩存變的輕而易舉。

這個(gè)包可以在 GitHub 找到,此文檔將介紹該應(yīng)用程序的所有要點(diǎn)。但是,這篇文章,我僅僅介紹緩存和清除緩存的知識(shí)。

安裝

可以通過(guò) Composer 安裝

$ composer require rennokki/laravel-eloquent-query-cache

在你的模型中添加 use  QueryCacheable :

use Rennokki\QueryCache\Traits\QueryCacheable;class Article extends Model
{
  use QueryCacheable;  ...
}

默認(rèn)情況下啟動(dòng)緩存行為

默認(rèn)情況下,該包不開(kāi)啟查詢緩存。為此,可以在模型中添加 $cacheFor 變量。

use Rennokki\QueryCache\Traits\QueryCacheable;class Article extends Model
{
  use QueryCacheable;  protected $cacheFor = 180; // 3 minutes
}

每當(dāng)執(zhí)行一個(gè)查詢時(shí),緩存將會(huì)干預(yù)。如果此查詢?cè)诰彺嬷袨榭?,那么?huì)去數(shù)據(jù)庫(kù)中獲取數(shù)據(jù),并且緩存它,以便下次可以從緩存中獲取。如果此查詢存在于緩存中,那么直接返回。

// 數(shù)據(jù)庫(kù)訪問(wèn),查詢結(jié)果存儲(chǔ)在緩存中
Article::latest()->get();// 未訪問(wèn)數(shù)據(jù)庫(kù),查詢結(jié)果直接從緩存中返回。
Article::latest()->get();

如果你只是想要避免命中緩存,你可以在命中最后一個(gè)方法之前使用  ->dontCache() 。

Article::latest()->dontCache()->firstOrFail();

啟用逐個(gè)查詢的緩存行為

另一種方法是,如果默認(rèn)情況下的緩存機(jī)制并不是太好的選擇,你可以啟用逐個(gè)查詢的緩存。

首先,從模型中移除變量 $cacheFor。

對(duì)于每個(gè)查詢,你可以調(diào)用 ->cacheFor(...) 方法去指定你想緩存的那個(gè)查詢。

Article::cacheFor(now()->addHours(24))->paginate(15);

用 tags 更好地組織緩存

一些緩存存儲(chǔ),像 Redis 或者 Memcached,提供了對(duì) key 的標(biāo)記支持。這很有用,因?yàn)槲覀兛梢栽诰彺嬷袠?biāo)記查詢,并在需要時(shí)再通過(guò) tag 使所需的緩存失效。

舉一個(gè)簡(jiǎn)單的例子,如果我們要在更新一篇文章時(shí)使文章列表不進(jìn)行緩存,你可以像這樣寫。

$articles = Article::cacheFor(60)->cacheTags(['latest:articles'])->latest()->get();
$article = Article::find($id);
$article->update(['title' => 'My new title']);
Article::flushQueryCache(['latest:articles']);

 flushQueryCache方法使用 latest:articles標(biāo)記使緩存無(wú)效。如果其他的一些查詢中沒(méi)有被 latest:articles標(biāo)記,那么將被保留緩存。

了解更多

有關(guān)此軟件包的更多信息,請(qǐng)?jiān)贕itHub 上查看該項(xiàng)目。

PS:Laravel緩存

1,Cache:put('key','val',10);設(shè)置緩存

      鍵:key , 值:val  10:緩存時(shí)間十分鐘

2,Cache:add('key','val',10);

    設(shè)置緩存 key:鍵,val:值 10:緩存時(shí)間十分鐘
    (有返回值 : 已經(jīng)有了緩存則返回false, 沒(méi)有則返回true并緩存)

3,Cache:forever('key','val');永久緩存

4,Cache:has('key');判斷緩存是否存在

5,Cache:get('key');獲取緩存

6,Cache:pull('key');獲取緩存一次并刪除緩存

7,Cache:get('key');刪除緩存,true刪除成功,false刪除失敗

總結(jié)

以上所述是小編給大家介紹的在 Laravel 6 中緩存數(shù)據(jù)庫(kù)查詢結(jié)果的方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

您可能感興趣的文章:
  • 清除laravel緩存命令代碼實(shí)例
  • laravel清除視圖緩存的代碼
  • 在Laravel的Model層做數(shù)據(jù)緩存的實(shí)現(xiàn)
  • laravel使用Redis實(shí)現(xiàn)網(wǎng)站緩存讀取的方法詳解
  • laravel框架的緩存操作代碼實(shí)例

標(biāo)簽:鎮(zhèn)江 婁底 湛江 南陽(yáng) 宜賓 銅川 黃南 寶雞

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《在 Laravel 6 中緩存數(shù)據(jù)庫(kù)查詢結(jié)果的方法》,本文關(guān)鍵詞  在,Laravel,中,緩存,數(shù)據(jù)庫(kù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《在 Laravel 6 中緩存數(shù)據(jù)庫(kù)查詢結(jié)果的方法》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于在 Laravel 6 中緩存數(shù)據(jù)庫(kù)查詢結(jié)果的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    大丰市| 黄山市| 谢通门县| 上栗县| 黄大仙区| 湘西| 枝江市| 安龙县| 昭觉县| 南投市| 达拉特旗| 开封市| 顺平县| 德昌县| 徐汇区| 易门县| 左权县| 中牟县| 永济市| 太原市| 南投市| 上饶市| 新乡市| 石渠县| 资阳市| 昭觉县| 黄石市| 随州市| 阿尔山市| 溧水县| 昌图县| 武定县| 连州市| 双桥区| 海安县| 汾阳市| 修文县| 仙游县| 平谷区| 金门县| 庆云县|