`
jack
  • 浏览: 392760 次
  • 来自: 温州
社区版块
存档分类
最新评论

memcache 和belongs_to 问题

阅读更多
如果用memcache把一些系统的基础数据表全部存起来,关联中的belongs_to,这种关联还得读取数据库。

例如 B belongs_to A   那么 a.b是取B表中的一条数据。 但是B表的数据全部都放在memcache中了。这里的数据读取就有问题了。 读cache总要比读取数据库要快的。有没有现成的方案的?
分享到:
评论
4 楼 dazuiba 2007-11-12  
谢谢robbin...
如果一开始我只想将缓存分布在一台机器上,ruby有没有memcached的替代品?
类似oscache,在一个ruby虚拟机内使用。
如果自己用ruby写个类似oscache的缓存器的话,如果使用多个mongrel实例,会不会制造多份缓存?
只是问问,:-)
3 楼 robbin 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


很简单。
2 楼 jack 2007-09-15  
两者都不是,只用了一个memcache client. Ruby-MemCache。 看来的还得自己写,主要有些查询不是通过id来查询的。
1 楼 robbin 2007-09-15  
如果你用的是CachedModel的话,会自动缓存关联对象,如果你用的是cache_fu,那就要自己写:
class Child
  acts_as_cached
  belongs_to :parent
  def parent
    Parent.get_cache(self.parent_id)
  end
end


相关推荐

    memcache_cache_handler.php for smarty 示例代码

    `memcache_cache_handler.php` 是Smarty模板引擎的一个缓存处理插件,用于将模板渲染结果存储到Memcache服务器,以提高网站性能。Memcache是一种分布式内存对象缓存系统,广泛应用于减轻数据库负载,加速动态Web应用...

    PHP7.x 8.0 memcache dll php_memcache.dll

    4. **性能优化**:memcache的性能受到网络延迟和并发处理能力的影响,合理设置缓存过期时间、选择合适的数据结构以及优化服务器配置都是提升性能的关键。 5. **兼容性问题**:由于`php_memcache.dll`扩展可能不兼容...

    win7安装配置memcache+php_.docx

    Memcache是一个高效、分布式的内存对象缓存系统,它通过内存中的哈希表存储各种类型的数据,包括文本、图像、视频、文件和数据库查询结果等。这种机制提高了数据访问速度,因为从内存中读取比从硬盘中读取快得多。 ...

    PHP5.5/5.6的 32&63 VC11 Memcache扩展php_memcache.dll

    PHP 添加 Memcache 扩展 : 下载包中包括如下: php_memcache-3.0.8-5.5-nts-vc11-x64.zip php_memcache-3.0.8-5.5-nts-vc11-x86.zip php_memcache-3.0.8-5.5-ts-vc11-x64.zip ...

    memcache_php使用测试

    **MEMCACHE_COMPRESSED** 是一个整型常量,用于在使用`Memcache::set()`, `Memcache::add()`和相关方法时开启压缩功能,这有助于在网络传输过程中减小数据包的大小,从而提高数据读写效率,特别适用于处理大量文本或...

    memcache_cache_handler.php

    本人写的smarty memcached cache 方法,此版为第2版,修正了在同台虚拟主机或在共享的memcached服务器上相同目录树下smarty读取错误cache的bug。本人亲测并使用于生产服务器上。

    php_memcache 服务扩展

    $memcache = new Memcache; $memcache->connect("localhost",11211); echo "Server's version: " . $memcache->getVersion() . "\n"; $tmp_object = new stdClass; $tmp_object->str_attr = "test"; $tmp_object->...

    memcache学习资料(包含memcache和java_memcache相应的jar)

    `java_memcache`相关的JAR文件通常包含了Java Memcached客户端库,如Xmemcached或spymemcached,这些库提供了API,让Java开发者能够方便地在Java应用中集成和使用Memcached服务。 在Windows环境下部署和使用...

    php5.4常用dll文件php_redis、php_memcache、php_mongo

    在标题和描述中提到的"php5.4常用dll文件php_redis、php_memcache、php_mongo"是指PHP 5.4版本中常用的三个动态链接库(DLL)扩展,它们分别对应于Redis、Memcache和MongoDB这三种不同的数据存储解决方案。...

    windows下安装Memcache,php_memcache.dll扩展

    里面有适合php5.2*,php5.3*,php5.4* 的php_memcache.dll文件,把php_memcache.dll放在php的 ext 文件夹中,打开php.ini,查找关键字extension,可以看到很多的php扩展,然后在添加 extension=php_memcache.dll 这...

    win_php_memcache.dll集合

    3. 键值管理:键值对是Memcache的基本存储单位,需要注意键的命名规则和长度限制,以及数据的序列化和反序列化。 4. 性能优化:合理设置缓存过期时间,避免缓存击穿问题;根据业务需求选择合适的缓存策略,如LRU...

    各种版本 PHP memcache_dll .zip

    PHP Memcache扩展提供了一系列函数,如`memcache_connect()`、`memcache_pconnect()`、`memcache_set()`、`memcache_get()`等,它们用于连接到Memcached服务器、存储和检索数据。例如,`memcache_set()`函数用于将...

    php5.4_memcache.dll 64位

    这个扩展使得PHP应用程序能够利用Memcache服务来存储和检索数据,从而提高网站性能,减少数据库负载。 描述中的 "php5.4 php_memcache.dll;memcached window64位" 提到的是在Windows 64位环境下,用于PHP 5.4的`...

    memcache_cache_handler.zip 共享多个memcache版

    此版本已在生产环境上使用,符合共享memcached的要求,并且可以使用smary::clear_all_cache();正常删除smarty缓存而不影响其它类型的数据。就算是在同服多虚拟主机上也能正常无误的对当前的cache进行删除操作。

    php 5.4.15 64位 memcache.dll

    标题 "php 5.4.15 64位 memcache.dll" 指的是针对 PHP 5.4.15 版本的一个64位系统优化的 memcache 扩展库...通过安装和运行示例,开发者可以快速地集成 memcache 到他们的 PHP 应用程序中,提升应用的性能和响应速度。

    php_memcache-5.2 5.3 5.4

    本文将详细探讨PHP与Memcached的集成扩展——php_memcache,以及其在不同PHP版本(5.2、5.3、5.4)中的应用和优化策略。 首先,php_memcache是PHP官方提供的一个非持久化存储的扩展,用于连接和操作Memcached服务器...

    memcache.dll(5.2/5.3/5.4/5.5)

    $memcache = new Memcache; $memcache->connect("localhost",11211); echo "Server's version: " . $memcache->getVersion() . "\n"; $tmp_object = new stdClass; $tmp_object->str_attr = "test"; $tmp_...

    memcache的tcp_udp_内存流程图.pdf

    本文将基于"memcache的tcp_udp_内存流程图.pdf"这一资料进行详细介绍。 #### 二、系统启动流程与libevent的使用 Memcached在启动过程中使用libevent库来管理事件。libevent是一个高性能的事件处理库,用于实现网络...

    php7.2 memcache.dll

    标题 "php7.2 memcache.dll" ...Memcache则是一个高性能的分布式内存对象缓存系统,它能够存储数据以减少数据库访问,提高网站...connect()`、`memcache_set()`和`memcache_get()`等,实现数据的缓存操作,优化网站性能。

    PHP7.1.xx-7.3xx各版本适配memcache.dll

    标签 "memcached" 和 "memcache.dll" 都与分布式缓存服务有关,但请注意,`memcache` 和 `memcached` 是两个不同的扩展。`memcache` 是用于与原始Memcached服务交互的PHP扩展,而 `memcached` 是另一个扩展,通常...

Global site tag (gtag.js) - Google Analytics