浏览 1704 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2007-09-15
如果用memcache把一些系统的基础数据表全部存起来,关联中的belongs_to,这种关联还得读取数据库。
例如 B belongs_to A 那么 a.b是取B表中的一条数据。 但是B表的数据全部都放在memcache中了。这里的数据读取就有问题了。 读cache总要比读取数据库要快的。有没有现成的方案的? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2007-09-15
如果你用的是CachedModel的话,会自动缓存关联对象,如果你用的是cache_fu,那就要自己写:
class Child
acts_as_cached
belongs_to :parent
def parent
Parent.get_cache(self.parent_id)
end
end
|
|
| 返回顶楼 | |
|
时间:2007-09-15
两者都不是,只用了一个memcache client. Ruby-MemCache。 看来的还得自己写,主要有些查询不是通过id来查询的。
|
|
| 返回顶楼 | |
|
时间:2007-09-15
jack 写道 两者都不是,只用了一个memcache client. Ruby-MemCache。 看来的还得自己写,主要有些查询不是通过id来查询的。
Ruby-MemCache的性能很糟糕,现在大家都改用memcache-client了。非主键的query cache自己写也没啥麻烦的,几行代码封装一下而已,如果你用cache_fu,已经有了。这是我写的query_cache代码: module QueryCache
# Usage: get_cache(key, timeout) { Model.find_method }
def get_cache(key, timeout = 60 * 30)
return value = yield if RAILS_ENV == 'test'
unless value = Cache.get(key)
Cache.put(key, value, timeout) if value = yield
end
value
end
end
很简单。 |
|
| 返回顶楼 | |
|
时间:2007-11-12
谢谢robbin...
如果一开始我只想将缓存分布在一台机器上,ruby有没有memcached的替代品? 类似oscache,在一个ruby虚拟机内使用。 如果自己用ruby写个类似oscache的缓存器的话,如果使用多个mongrel实例,会不会制造多份缓存? 只是问问,:-) |
|
| 返回顶楼 | |








