2016-10-13 107 views
0

我利用Yii中的SQL緩存從表中顯示的數據(見下文)如何清除緩存在警予查詢

$results = Yii::app()->db->cache(1000)->createCommand($sql)->bindValues($params)->queryAll(); 

但問題是,我刪除一個值後,這個查詢仍然顯示已被刪除的值。在我的刪除語句中,如何強制將緩存標記爲髒,以便上述語句不顯示不再存在的舊刪除數據?

供您參考:http://www.yiiframework.com/doc/guide/1.1/en/caching.data

回答

1

而是在刪除緩存無效的,可以在dependency添加到緩存中。如果依賴項更改,則緩存失效。例如如果您使用的是自動遞增的ID,您可以設置表的max(id)是依賴:

$results = Yii::app()->db->cache(
     1000, 
     new CDbDependancy("SELECT max(id) FROM table") 
    )->createCommand($sql)->bindValues($params)->queryAll(); 
0

如果緩存查詢結果在Redis的,你可以打開Yii的調試模式,找到Redis的關鍵,這在redis中用於查詢結果,然後刪除redis鍵。

調試日誌如下:

2016年10月18日19時25分29秒[跟蹤] [system.caching.CRedisCache]服務 「的Yii:的DBQuery:cc6401a98f142e12f880dc4ab9447813811d1saasase0e」 從緩存中 2016年10月18日19 :25:29 [trace] [system.db.CDbCommand]在緩存中找到的查詢結果