成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

北哥大話Yii2緩存機制 - 緩存依賴

klivitamJ / 1764人閱讀

摘要:我們都知道,的緩存是支持依賴的,就是我們設置的緩存是否失效除了過期時間還決定于它所依賴的東東是否變化。用好依賴將大大提高我們使用緩存的效果,本節(jié)講解緩存的種依賴方式?,F(xiàn)在我們?nèi)匀煌ㄟ^一個例子說明,假設我們的一個緩存同時依賴于兩個依賴。

我們都知道,yii2的緩存是支持依賴的,就是我們設置的緩存是否失效除了過期時間還決定于它所依賴的東東是否變化。

用好依賴將大大提高我們使用緩存的效果,本節(jié)講解yii2緩存的5種依賴方式。

還是先列某

yiicachingDbDependency

yiicachingExpressionDependency

yiicachingFileDependency

yiicachingTagDependency

yiicachingChainedDependency

begin...

DbDependency

我們可以將SQL語句直接作為依賴條件。當數(shù)據(jù)庫查詢出的內(nèi)容發(fā)生變化時候,緩存即會受到影響。

假設我當前要搜索出所有的分類信息并緩存起來,每3000秒更新一次或當分類有變化是后自動更新,使用DbDependency我們可以輕松實現(xiàn)。

$dependency = new yiicachingDbDependency(["sql"=>"SELECT COUNT(*) FROM category"]);
$cache->add("category",function($cache){
    return Category::find()->all();
},3600,dependency);

使用緩存獲取數(shù)據(jù)

$cache->get("category");

代碼執(zhí)行后,當超過3000秒或分類字段條數(shù)有變化,都將緩存設置為失效。該依賴的推薦為依賴里執(zhí)行的sql語句所損耗的資源最好小于緩存所帶來的損耗。

ExpressionDependency

指定的 PHP 表達式執(zhí)行結(jié)果發(fā)生變化,則緩存變化,這里的表達式為整個PHP,而不局限于Yii。

$dependency = new yiicachingExpressionDependency(["expression"=>"Yii::$app->request->get("id")"]);
$cache->add("hy","Hello Yii",3000,$dependency);

獲取緩存數(shù)據(jù)

$cache->get("hy");

如上面代碼,我們在3000之內(nèi)使用hy都直接從緩存讀取Hello Yii,但是當使用緩存的頁面url ?id=xx發(fā)生變化的時候則失敗,返回flase

FileDependency

將緩存和文件綁定在一起。如果文件的內(nèi)容發(fā)生變化,那么緩存將會收到影響。而Yii是根據(jù)這個文件的最后修改時間來判斷其內(nèi)容是否變化的。

依賴文件 hello.txt,其內(nèi)容為a

設置依賴

$dependency = new yiicachingFileDependency(["fileName"=>"@app/hello.txt"]);
$cache->add("hy","Hello Yii",3000,$dependency);

獲取緩存數(shù)據(jù)

$cache->get("hy");

現(xiàn)在當我們將hello.txt 內(nèi)容改為b的時候,再次獲取緩存則失敗,返回flase。
小提示:文件路徑可以使用別名哦

TagDependency

該類依賴的意思是某個或某些緩存是否失效除了由時間決定,還有一個標簽決定,舉例說明

use yiicachingTagDependency;
$cache->add("abc","Hello Yii",3000,new TagDependency(["tags" => "num"]));

此刻我們設置了一個緩存abc,它依賴于標簽num

當我們在其他的代碼中執(zhí)行了

use yiicachingTagDependency;
TagDependency::invalidate(Yii::$app->cache, "num");

當我們執(zhí)行TagDependency::invalidate(Yii::$app->cache, "num");時,可以將與num標簽相關的緩存設置為無效,因此當我們再次獲取時,abc已經(jīng)失效,即便3000秒還沒有到。

ChainedDependency

一個系統(tǒng)中的數(shù)據(jù)是彼此相連的,緩存的依賴也可能出現(xiàn)多種聯(lián)系,使用TagDependency可以將一組緩存標記為同一個標簽,然后使用invalidate函數(shù)將這組緩存統(tǒng)一失效,但是這樣還不足以滿足千變?nèi)f化的依賴關系。

因此 ChainedDependency 出現(xiàn)了,我們可以將一系列的緩存依賴使用 ChainedDependency 組合起來,這樣當這個組合中的某個或全部依賴發(fā)生變化后,將直接影響到緩存。

現(xiàn)在我們?nèi)匀煌ㄟ^一個例子說明,假設我們的一個緩存同時依賴于兩個依賴。

$cache = Yii::$app->cache;
$fileDependency = new yiicachingFileDependency(["fileName"=>"@app/hello.txt"]);
$sqlDependency = new yiicachingDbDependency(["sql"=>"SELECT COUNT(*) FROM category"]);

$cache->set("abc", "hello yii", 3000, new ChainedDependency([
    "dependOnAll"=>true,
    "dependencies" => [$fileDependency, $sqlDependency]
]));

這樣,當 $fileDependency$sqlDependency 中任何一個依賴發(fā)生變化后都會引起緩存的失效,這里要注意一個問題 dependOnAll(默認為true),當為true時,只要依賴組合中的一個發(fā)生變化則緩存失效,否則必須每個依賴都變化才會引起緩存的失效。

北哥的話

緩存是我們提供程序性能的主要手段,以上五種依賴務必記住,當我們使用緩存的時候,優(yōu)化緩存邏輯也是我們要考慮的,如何有效的使用依賴保證因為依賴而帶來的各種延時,是每個攻城獅要研究的。

原文鏈接 http://nai8.me/sapper-index.html

下面是我的小廣告,關注公眾號,分享干貨

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/61857.html

相關文章

  • 北哥大話Yii2緩存機制 - File緩存

    摘要:講的好長作為北哥大話緩存機制第一篇,希望大家喜歡,為了一段日子里我會專注于分享的緩存機制。 有的兄弟一定會說,F(xiàn)ile緩存有什么好講的那?不就是一個set,然后在一個get么?那你知道的只是皮毛~ 的確如大家所說,緩存從表現(xiàn)層看就是一個set(放數(shù)據(jù)),然后再一個get(拿數(shù)據(jù)),但是請記住,這樣是不夠的,如果你不了解每個緩存的實現(xiàn)原理、存儲特點等等,你是無法使用對場景的,什么時候用F...

    cnTomato 評論0 收藏0
  • 北哥大話Yii2緩存機制 - DbCache

    摘要:數(shù)據(jù)庫緩存并不麻煩,基本用法依然符合緩存的統(tǒng)一接口,具體方法可以在里查看。會被的函數(shù)引用,該函數(shù)被和觸發(fā)。 數(shù)據(jù)庫緩存并不麻煩,基本用法依然符合yii2緩存的統(tǒng)一接口,具體方法可以在 http://nai8.me/sapper-view.ht... 里查看。 如果要啟動數(shù)據(jù)庫緩存,必須要有一個數(shù)據(jù)庫及數(shù)據(jù)表,這些可以通過cache的配置文件完成 cache => [ class...

    PAMPANG 評論0 收藏0
  • 大話微服務架構(gòu)故障隔離及容錯處理機制

    摘要:優(yōu)雅的服務降級微服務架構(gòu)最大的優(yōu)點之一就是當組件出現(xiàn)故障時,能隔離這些故障并且能做到優(yōu)雅地服務降級。 本文首先介紹微服務架構(gòu)存在的風險,然后針對如何避免微服務架構(gòu)的故障,提出了多種有效的微服務架構(gòu)中的方法和技術(shù),其中例如服務降級、變更管理、健康檢查和修復、斷路器、限流器等。 目錄 1、微服務架構(gòu)的風險 2、優(yōu)雅的服務降級 3、變更管理 4、健康檢查和負載均衡 5、自我修復 6、故障轉(zhuǎn)移...

    Binguner 評論0 收藏0
  • 大話微服務架構(gòu)故障隔離及容錯處理機制

    摘要:優(yōu)雅的服務降級微服務架構(gòu)最大的優(yōu)點之一就是當組件出現(xiàn)故障時,能隔離這些故障并且能做到優(yōu)雅地服務降級。 本文首先介紹微服務架構(gòu)存在的風險,然后針對如何避免微服務架構(gòu)的故障,提出了多種有效的微服務架構(gòu)中的方法和技術(shù),其中例如服務降級、變更管理、健康檢查和修復、斷路器、限流器等。 目錄 1、微服務架構(gòu)的風險 2、優(yōu)雅的服務降級 3、變更管理 4、健康檢查和負載均衡 5、自我修復 6、故障轉(zhuǎn)移...

    Youngdze 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<