需要一些帮助来澄清这个概念。
$sql = 'SELECT * FROM tbl_post LIMIT 20';
$dependency = new CDbCacheDependency('SELECT MAX(update_time) FROM tbl_post');
$rows = Yii::app()->db->cache(1000, $dependency)->createCommand($sql)->queryAll();
1.如果缓存中包含SQL语句索引的条目。
2.如果依赖没有改变(最大update_time值与查询结果保存在缓存中时相同)。
我不明白上面的解释是什么意思。特别是关于最大更新时间的第二个。如果我错了,请纠正我。
tbl_post 表中有一个 update_time 列。每当更新一行时,update_time 也会更新。如果从缓存中检索到帖子,CDbCacheDependency 将首先在数据库中查询 MAX(update_time)? 这样做的目的是什么以及它在保持缓存更新方面究竟是如何工作的?
另一个问题是关于内存缓存的。我知道可以集群 memcache 服务器。假设我有以下配置。
美国有 1 个内存缓存服务器。欧洲的 1 个内存缓存服务器。
我的 Yii 网站使用了 2 个节点的集群。memcache 将在 2 个节点之间拆分缓存。
1.用户A从数据库中检索一个帖子并缓存它。假设 (123,$model) 在美国节点。
2.用户 B 想从欧洲检索相同的帖子。查找密钥 123 会找到缓存吗?两个用户都在美国还是欧洲有关系吗?
谢谢!!