yii缓存和couchbase

yii缓存和couchbase,yii,memcached,couchbase,Yii,Memcached,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语句索引的条

需要一些帮助来澄清这个概念

$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.如果依赖项未更改(最大更新时间值与将查询结果保存在缓存中时相同)

我不明白上面的解释是什么意思。特别是关于最大更新时间的第二个。如果我错了,请纠正我

tbl_post表中有一个update_time列。每当一行被更新时,更新时间也会被更新。如果从缓存中检索到post,CDbCacheDependency将首先查询数据库的MAX(更新时间)?这样做的目的是什么?它在保持缓存更新方面究竟是如何工作的

另一个问题是关于memcache。我知道可以对memcache服务器进行集群。假设我有以下配置

美国有1台memcache服务器。欧洲有1台memcache服务器

我的Yii网站利用2个节点组成的集群。memcache将在2个节点之间拆分缓存

1.A用户从数据库中检索帖子并将其缓存。在US节点中假设(123美元模型)

2.B用户希望从欧洲检索相同的帖子。查找密钥123会找到缓存吗?这两个用户是在美国还是在欧洲重要吗


谢谢

第一次运行后-DB组件将其
s结果放入缓存。此外,它还将显示依赖项查询的结果(在您的情况下,最长更新时间)。

然后,当您尝试获取数据时,db组件执行依赖项查询,并将其与缓存的查询进行比较。若依赖项保持不变(并没有新的post),它将从缓存中获取查询结果,在另一种情况下,它将执行的查询。

第一次运行后,DB组件将其
的结果放入缓存中。此外,它还将显示依赖项查询的结果(在您的情况下,最长更新时间)。

然后,当您尝试获取数据时,db组件执行依赖项查询,并将其与缓存的查询进行比较。如果依赖关系保持不变(没有新的post),它会从缓存中获取查询结果,在另一种情况下,它会执行`的查询。

那么依赖关系有助于保存数据库查询,而每次都会执行另一个短查询?我认为如果查询很复杂,可以节省很多钱,但如果查询不复杂,依赖性就没有多大帮助了?有没有更好的方法来消除依赖项查询?在大多数情况下,您不需要依赖项。你应该只在你真的需要新数据的时候才使用它。顺便说一句,如果我的答案有用的话,你可以投票赞成,或者把它标记为一个解决方案,这样依赖关系有助于保存数据库查询,而每次都要执行另一个简短的查询?我认为如果查询很复杂,可以节省很多钱,但如果查询不复杂,依赖性就没有多大帮助了?有没有更好的方法来消除依赖项查询?在大多数情况下,您不需要依赖项。顺便说一句,你应该只在你真的需要新数据的时候才使用它——如果我的答案有用,你可以投票赞成,或者把它标记为解决方案