我正在使用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
您可以在缓存中添加dependency,而不是在删除过程中使缓存无效。如果依存关系更改,则缓存无效。例如如果您使用的是自动递增ID,则可以将表的max(id)
设置为依赖项:
$results = Yii::app()->db->cache(
1000,
new CDbDependancy("SELECT max(id) FROM table")
)->createCommand($sql)->bindValues($params)->queryAll();
如果您在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