具有无限过期时间的 Yii 查询缓存

Yii query caching with infinite expire time

我正在使用具有无限过期时间的查询缓存。例如考虑下面的一段代码:

$channels  = Channels::model()->cache(0)->findAll(array('order' => 'channel_name'));

这条语句应该在缓存中创建条目并且它正在做,但它不是从缓存中获取数据,而是直接去数据库获取结果。

虽然,如果我提供的过期时间 > 0(零),那么它会顺利运行。例如:

    $channels  = Channels::model()->cache(20)->findAll(array('order' => 'channel_name'));

完美运行 20 秒并从缓存中获取结果。

我们在启用日志并查看分析时确认了这一点。

无限过期时间也适用于使用 Yii::app()->cache->set()Yii::app()->cache->get()

缓存 key/value 对

知道我是否做错了什么吗?

谢谢。

根据文档 0 表示缓存已禁用。

只需将其设置为某个较大的值即可。如果你在很多地方需要它,就把它定义为常量,以避免混淆magic number antipattern,即:

define('IMMUTABLE_CACHE', 60 * 60 * 24 * 365 * 100);

$channels  = Channels::model()->cache(IMMUTABLE_CACHE);