本站首页    管理页面    写新日志    退出


«October 2025»
1234
567891011
12131415161718
19202122232425
262728293031


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7630857
建立时间:2006年5月29日




[Ruby on Rails]Ruby on Rails + Memcached
软件技术

lhwork 发表于 2007/1/20 13:45:17

这篇BLOG来自 thegiive blog: Rails + Memcached ,他写了一系列的Rails有关的非常有用的文章,我选取转换成简体中文转发布了,能习惯繁体中文的朋友订阅他的blog, 将会获得不少帮助。 先介绍一下 Memcached ,Memcached 是一个分布式的 Memory Object 架构,最早由 Life Journal 所采用。 他可以启动一支 Deamon 来将所有其它 Client 的 Object 都集合起来,并且做到多机器同步化的工作。 當然,我們可以使用 Database 去做到一模一樣的事情,但是其實 Database 在 ACID 上面已經付出太多 Overhaed。如果今天需要分散式操作的東西,是一些不需要考慮 ACID 的東西,像是 Cache ,Session 之類真的不見就算了的東西的話,你可以考慮使用效率比 Database 快的 Memcached。目前已經有相當多的網站使 用 Memcached 的技術,可說是相當成熟。並且在 Web Server 使用考量上,Web Server 通常使用資源是高 CPU 低 Memory ,而 Memcached 是低 CPU 高 Memory 的使用方式,兩者可以結合彼此優缺點,讓 Web Server 跟 Memcached 跑在同一台機器上面來避免浪費資源使用率。 以 Ruby on Rails 来看,Memcached 可以用在 ActionController::Caching::Fragments CGI::Session::MemCacheStore cached_model for caching ActiveRecord objects 这三个用途。我目前使用他都是在 Session Store 这个部分,他可以将 Multi Backend Application Server 的 Session 存放放在同一处,当然可以提高Rails Scaling 的部分。而在实做上面,Memcache 没有设定档。要在 Master 启动一个 2G Memory,listen 在 1.2.3.4 ,port 11211 的 Memcache Deamon 是这样启动的 # ./memcached -d -m 2048 -l 1.2.3.4 -p 11211 Ruby 要使用 Memcached 是非常的简单,只要安装 ruby memcache 就没问题了。 gem i ruby-memcache 但是现在还有更新的,而且也很快的 Ruby Memcached Client AP # gem install memcache-client 要在 Rails 上面使用 Memcached 来当作 Session Handler 也相当的简单,将 session store 设为 memcached 即可。你可以在 enviroment.rb 加入 require ‘memcache’memcache_options = { :compression => false, :debug => false, :namespace => “app-#{RAILS_ENV}“, :readonly => false, :urlencode => false } memcache_servers = [ ‘192.168.1.150:2222′, ‘192.168.1.150:2223′ ] Rails::Initializer.run do |config| …. config.action_controller.session_store = :mem_cache_store … config.action_controller.fragment_cache_store = :mem_cache_store, memcache_servers, memcache_options … end … cache_params = *([memcache_servers, memcache_options].flatten) CACHE = MemCache.new *cache_params ActionController::CgiRequest:: DEFAULT_SESSION_OPTIONS.merge!({ ‘cache’ => CACHE })   其实 Rails 对于 Scale 的准备还算是相当的完整,很多地方都有相当简单方便的实做。 延伸阅读 Memcached 官方网页 Rails Wiki:Memcached Rails Wiki:HowtoChangeSessionStore不只介绍 Ruby Memcached,还介绍 ActiveRecordStore 等用法 使用memcached进行内存缓存 iveJournal.com使用了memcached在前端进行缓存,取得了良好的效果,而像wikipedia,sourceforge等也采用了或即将采用memcached作为缓存工具。memcached可以大规模网站应用发挥巨大的作用。


阅读全文(2464) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 1.203 second(s), page refreshed 144812647 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号