如何在一个yii查询中清除该高速缓存

wpcxdonn  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(186)

我正在使用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

ig9co6j1

ig9co6j11#

您可以在删除时新增相依性该高速缓存快取,而不是让快取失效。如果相依性变更,快取就会失效。例如,如果您使用自动递增的ID,您可以将表格的max(id)设定为相依性:

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

0qx6xfy62#

如果您在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

相关问题