需要一些帮助来澄清概念。yii缓存和couchbase
$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值与查询结果保存在缓存中时相同)。
我不明白上面的解释是什么意思。尤其是关于update_time最大值的第二个。如果我错了,请纠正我。
tbl_post表中有一个update_time列。每当更新行时,update_time也会更新。如果从缓存中检索帖子,CDbCacheDependency将首先查询数据库中的MAX(update_time)?这样做的目的是什么?它在保持缓存更新的过程中究竟有什么作用?
另一个问题是关于memcache。我知道可以对内存缓存服务器进行集群。假设我有以下配置。
1美国的memcache服务器。 1欧洲的memcache服务器。
我的Yii网站利用2个节点的集群。 memcache将拆分2个节点之间的缓存。
1.user A从数据库中检索一个帖子并对其进行缓存。假设(123,$模型)在美国节点。
2.用户B想要从欧洲找回相同的帖子。将寻找密钥123找到缓存?如果两个用户都在美国或欧洲,是否重要?
谢谢!
因此,依赖性有助于保存数据库查询,而牺牲每次执行另一个短的查询? 如果查询很复杂,我认为有显着的节省,但否则,依赖并没有多大帮助? 有没有更好的办法,通过取消依赖查询? – twb 2012-07-12 06:00:19
在大多数情况下,您不需要依赖关系。只有当你真的需要新的数据时,你才应该使用它 – sl4mmer 2012-07-12 13:55:44
顺便说一句 - 如果我的回答很有用,你可以投票,或将其标记为解决方案 – sl4mmer 2012-07-12 13:57:26