【发布时间】:2012-07-11 06:30:46
【问题描述】:
需要一些帮助来澄清这个概念。
$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.user A 从数据库中检索一个帖子并缓存它。假设 (123,$model) 在美国节点。
2.用户 B 想从欧洲检索相同的帖子。查找密钥 123 会找到缓存吗?两个用户都在美国还是欧洲有关系吗?
谢谢!!
【问题讨论】: