簡體   English   中英

如何在yii2 ActiveRecord中使用查詢緩存

[英]How to use query caching in yii2 ActiveRecord

我引用了指南:

``查詢緩存是一種基於數據緩存的特殊緩存功能。 它用於緩存數據庫查詢的結果。

查詢緩存需要數據庫連接和有效的緩存應用程序組件。 查詢緩存的基本用法如下,假設$ db是yii \\ db \\ Connection實例:

$result = $db->cache(function ($db) {

    // the result of the SQL query will be served from the cache
    // if query caching is enabled and the query result is found in the cache
    return $db->createCommand('SELECT * FROM customer WHERE id=1')->queryOne();

});

``

我不認為我會在AR類中手動創建數據庫連接。 那么如何在我的AR模型中做到這一點?

我在yii2論壇上問了同樣的問題 ,但我沒有回答。 似乎人們不知道如何在Active Record中進行查詢緩存。

Yii 2現在需要閉包來包裝查詢。 AR最終會進行查詢,因此您可以將其放入閉包中。 在AR類中,獲取數據庫並包裝要使用的查詢。 閉包有一個簽名函數($ db) ,你通常需要訪問更多變量,所以添加use($ variable)使變量在閉包中可見。

    $db = self::getDb();
    $object = $db->cache(function ($db) use($id) {
        return self::findOne($id);
    });

如果您寫入db,則在緩存持續時間到期之前,上面的緩存將不會知道它。 因此,應該將依賴項添加到緩存函數中,以告知它何時使緩存無效。 依賴變得很快...... http://www.yiiframework.com/doc-2.0/yii-caching-dependency.html

也許這個幫助: 在github上的yii2問題

qiangxue於2014年1月11日發表評論

在2.0中,您需要使用以下代碼:

$db->beginCache();
// your db query code here...
$db->endCache();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM