【问题标题】:yii caching and couchbaseyii缓存和couchbase
【发布时间】: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 会找到缓存吗?两个用户都在美国还是欧洲有关系吗?

谢谢!!

【问题讨论】:

    标签: yii memcached couchbase


    【解决方案1】:

    第一次运行后 - DB 组件将它放入s result into cache. Also it puts there result of dependency-query (max update time in your case). Then when your try to get data, db component executs dependency query and compare it with cached one. If dependency is unchanged (there is no new posts) 它从缓存中获取查询结果,否则它会执行查询。

    【讨论】:

    • 所以依赖关系有助于节省数据库查询,但每次都执行另一个短查询?我认为如果查询很复杂,可以节省大量资金,但否则,依赖关系没有多大帮助?有没有更好的方法来取消依赖查询?
    • 大多数情况下你不需要依赖。只有在真正需要新数据时才应该使用它
    • 顺便说一句 - 如果我的回答有用,您可以投票,或将其标记为解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多