yii中的查询缓存


Query cache in yii

如果我想像这里的教程中那样使用查询缓存:

Yii查询缓存指南

是否应该在每个表中都有一个update_time字段?

$dependency = new CDbCacheDependency('SELECT MAX(update_time) FROM tbl_post');

字段是否必须存在才能使用查询缓存?

本指南仅为您提供了一个示例,说明如何在查询缓存中使用缓存依赖项,但依赖项不是强制性的。如果您使用一个,您可以使用自己的SQL来确定缓存的内容是否仍然有效。因此update_time字段也不是强制性的。

要回答您的问题,正如Michael已经写过的,这不是强制性的。要了解更多信息,您应该了解依赖关系查询所扮演的角色。

考虑一个例子。您希望缓存将列出所有用户的查询。类似SELECT * FROM users的东西。假设在任何时间点,都是100个用户。

现在的主要问题是,您认为缓存的数据何时会无效?每当添加新用户时,都需要重新查询(不使用缓存数据/使缓存数据无效)。如何查找添加的新用户?通过查询身份证号码。因此,如果查询SELECT MAX(ID) FROM Users返回不同的值,则意味着添加了新用户。

记住如果用户被删除,那么我的示例将无效。此时,在删除用户之后,您应该删除相应的缓存数据。

通过这种方式,您应该找到可用于验证缓存数据的相关查询。