如何清除yii查询中的缓存

时间:2016-10-13 19:50:20

标签: caching yii

我正在利用Yii的sql缓存来显示表格中的数据(见下文)

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

但问题是,在删除值后,此查询仍会显示已删除的值。在我的删除语句中,如何强制将缓存标记为脏,以便上述语句不显示不再存在的旧已删除数据?

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

2 个答案:

答案 0 :(得分:1)

您可以在缓存期间添加dependency,而不是在删除期间使缓存无效。如果依赖关系更改,则缓存无效。例如如果您使用的是自动递增ID,则可以将表的max(id)设置为依赖项:

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

答案 1 :(得分:0)

如果你在redis中缓存查询结果,你可以打开Yii调试模式并找到redis密钥,redis密钥在redis中用于查询结果,然后是delis redis密钥。

调试日志如下:

2016/10/18 19:25:29 [追踪] [system.caching.CRedisCache]服务" Yii:dbquery:cc6401a98f142e12f880dc4ab9447813811d1saasase0e"来自缓存 2016/10/18 19:25:29 [trace] [system.db.CDbCommand]在缓存中找到的查询结果

相关问题