如何在yii查询中清除缓存

问题描述 投票:0回答:2

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

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

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

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

caching yii
2个回答
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 [trace] [system.caching.CRedisCache] Serving "Yii:dbquery:cc6401a98f142e12f880dc4ab9447813811d1saasase0e" from cache
2016/10/18 19:25:29 [trace] [system.db.CDbCommand] Query result found in cache
© www.soinside.com 2019 - 2024. All rights reserved.