Chris 曾经在Gamespot工作,他在这里谈论游戏。在过去的一年党中,有无数的年轻人在不停地刷新这个网站,而此网站依然坚挺。他们每天要处理50M地页面,没有down掉。他们用Memcache做到了这点。
Memcache 是个分布式的hash,由Livejournal开发。
你会选择用Memcache吗?
Rails and Memcache
用Fragments, Actions, Sessions, Objects缓存, 你可以使用:
-
memcache-client
(by Robot-coop guys/Eric Hodel). Marshal.unload is 40 times faster than Object.new/loading from the database.
- CachedModel – integration with ActiveRecord
- Fragment Cache Store
- Memcache session store
…或者…
cache_fu插件
或者叫 acts_as_cached 2.0。它覆盖以上讨论的所有Objects,只需要配置一个YAML 文件(config/memcached.yml).提醒:不要在服务器配置文件中使用names.而是要用IPs,为了避免BIND和每次连接都连接数据库.
你需要的只有这些--你过你用set_cache,你可能不清楚改插件是如何工作的。要在在after save钩子上使用缓存失效机制。例如:
class
Presentation
<
ActiveRecord
::
Base
acts_as_cached
after_save
:expire_cache
end
再如:
class
Presentation
<
ActiveRecord
::
Base
acts_as_cached
:conditions
=>
'
published = 1
'
end
Cached-scoped-finders (译者注:不知如何翻译).。这个用法将会把自定义地find方法挪到model上,然后在其中包装一些缓存机制,cache_fu插件通过AR::Base方法将这个功能有机结合起来。
class
Topic
<
ActiveRecord
::
Base
def
self.weekly_popular
Topic
.
find
:all
,
...
end
end
Topic
.
cached
(
:weekly_popular
)
用alias_method_chain方法将date加入到缓存键:
def
self.cache_key_with_date
(
id
)
...
end
class
<<
self
alias_method_chain
:cache_key
,
:date
end
用ID加载缓存:由Topic.find(1, 2, 3)转变为Topic.get_cache(1, 2, 3),这样可以将缓存数据放入memcached,并且在以后访问他们。
user_ids
=
@topic
.
posts
.
map
(&
:user_id
).
uniq
@users
=
User
.
get_cache
(
user_ids
)
你也可以缓存关联,因此,你可以通过memcache来导航关联。
缓存重写
class
ApplicationController
<
ActionController
::
Base
before_filter
:set_cache_override
def
set_cache_override
ActsAsCached
.
skip_cache_gets
=
!!
params
[
:skip_cache
]
end
end
reset_cache:重置缓存(这段不知道改怎么翻译了:reset_cache
: Slow, uncached operations can sometimes queue up and wedge a site. Instead, issue cache resets on completion of a request, rather than expiring beforehand. That way, requests that continue to pile up will still use the cached copy until the rebuild is complete.)
class
Presentation
<
ActiveRecord
::
Base
after_save
:reset_cache
end
版本:当修改代码后地缓存方式
class
Presentation
<
ActiveRecord
::
Base
acts_as_cached
:version
=>
1
end
部署:Chris推键是一能够Monit部署以保证Memcache服务器高效率工作。(译者注:不知其他服务器效率如何)
livketama:在不使缓存实效地情况下重新部署Memcache服务器。
问题: Page caching? Nginx 会使用本地Memcache page caching,即在rails 主机之外。
后记:由于本人最近正在研究cache_fu插件地使用方法,本篇文章会持续更新,敬请关注。欢迎发表您对该插件的理解。
分享到:
- 2007-10-20 12:55
- 浏览 4296
- 评论(3)
- 论坛回复 / 浏览 (2 / 3128)
- 查看更多
相关推荐
ngx_cache_purge应用插件是针对Nginx服务器的一个扩展模块,主要功能是实现缓存的清理和刷新。在Web服务器环境中,缓存是提高网站性能的重要手段,它能够存储频繁访问的静态资源,减少对后端服务器的压力。然而,当...
这个版本2.4.2的压缩包包含了ngx_cache_purge模块的所有源代码及相关文件,以便开发者在自己的Nginx环境中集成和使用。 Nginx是一款高性能、轻量级的Web服务器和反向代理服务器,广泛应用于互联网服务。其内置的...
ngx_cache_purge 是 nginx 模块,此模块可以清理 nginx 的 FastCGI、proxy、 SCGI 和 uWSGI 的缓存。配置指令(相同位置语法)fastcgi_cache_purgesyntax: fastcgi_...示例:nginx扩展模型ngx_cache_purge缓存清理插件
### Oracle数据库中的db_cache_size与granule_size详解 #### 一、db_cache_size参数解析 **1. 参数定义** - **名称**: `DB_CACHE_SIZE` - **类型**: 大整数(Biginteger) - **语法格式**: `DB_CACHE_SIZE = ...
从提供的文件名"ngx_cache_purge-2.3.tar.gz"和"ngx_cache_purge-master.zip"来看,这是插件的不同版本。通常,我们可以按照以下步骤进行安装: 1. 解压下载的源码包,例如:`tar -zxvf ngx_cache_purge-2.3.tar.gz...
在实际使用中,可以使用HTTP DELETE方法发送一个请求到Nginx服务器,附带特定的URL,ngx_cache_purge插件会根据配置规则清除对应的缓存条目。例如,一个简单的示例配置可能如下: ```nginx http { ... proxy_...
然而,当Mycat与MySQL 8.0及以上版本配合使用时,可能会遇到一些兼容性问题,其中“query_cache_size”报错就是典型的例子。 在MySQL 8.0中,查询缓存功能被默认禁用,并且在某些版本中被完全移除。这是由于MySQL...
标题中的问题涉及到的是在使用Mycat数据中间件时,尝试使用JDBC 8驱动连接到Mycat 1.6版本时遇到的一个错误:`Unknown system variable 'query_cache_size'`。这个问题出现的原因在于MySQL 8.0版本中移除了`query_...
Verilog和VHDL是实现这一目标的强大工具,而“cache.rar_cache verilog_cache vhdl_verilog cache_verilog cac_vh”这个标题和相关标签暗示了文件集合可能提供了从理论到实践的全面缓存设计资源。通过学习和研究这些...
ngx_cache_purge-1.3.tar.gz 是一个用于Nginx服务器的插件包,它主要功能是实现缓存清理。这个插件使得管理员或应用能够动态地清除Nginx的HTTP缓存,以确保用户获取到最新的内容。在了解这个压缩包之前,我们先来...
要使用ngx_cache_purge-2.0,你需要按照以下步骤操作: 1. **安装依赖**:确保你的系统上已经安装了Nginx的开发库和其他必要的编译工具。 2. **解压文件**:使用`tar -zxvf ngx_cache_purge-2.0.tar.gz`命令解压...
在标签“adi blackfin adi_blackfin blackfin_cache_ cache_enable”中,关键词“adi_blackfin”是指ADI公司的Blackfin处理器,而“blackfin_cache”则明确了与Blackfin处理器缓存有关,"cache_enable"再次强调了这...
expresscache安装程序 ExpressCache软件会自动在mSATA SSD硬盘上创建必要的缓存分区
本文档将深入探讨S3C4510开发板的使用,以及与其密切相关的Cache_v1机制,旨在为开发者提供详尽的设计资料和实践指导。 首先,S3C4510是一款基于ARM7TDMI架构的RISC(精简指令集计算机)处理器,具有高性能、低功耗...
"cpu_cache_interrupt.zip_cache_cache verilog_cache 中断_cpu流水_inter"这个压缩包文件主要涉及到以下几个关键概念:Cache、Verilog、中断以及CPU流水线。接下来,我们将深入探讨这些主题。 1. **Cache**: Cache...
"IE_Cache_Recovery"工具的使用步骤如下: 1. **安装与运行**:下载并解压"IE_Cache_Recovery.rar",其中包含的"IE_Cache_Recovery.exe"是主程序。双击运行,软件界面通常会提示用户选择要扫描的IE缓存目录。 2. *...
在设置完 Cache_mem 和 Cache_dir 之后,需要使用 squid -z 命令来使缓存目录生效。 最后,需要设置允许所有人访问代理服务器。可以使用 http_access allow all 参数来实现这一点。 http_access allow all 在...
本文将深入探讨如何使用Cache_Lite替代CodeIgniter内置的缓存功能,以及这样做的潜在好处。 Cache_Lite是PHP的一个轻量级缓存库,由Fabien Potencier创建。它允许开发者在本地文件系统中存储数据,以快速访问经常...
而`fsl_85xx_cache_sram.h`作为头文件,通常会包含函数声明、宏定义以及结构体定义,这些都是为了在其他模块中正确地调用和使用缓存管理功能。例如,它可能定义了与QorIQ处理器特定的缓存操作相关的函数原型,如`...