`

Rails + Memcached

阅读更多
這篇介紹如何將 Memcached 跟 Rails 做一個結合,先介紹一下 Memcached 這個著名的套件。Memcached 是一個分散式的 Memory Object 架構,最早是 Life Journal Team 為了加快速度而開發的套件。 他可以啟動許多 Deamon 來將所有其他 Client 的 Object 都集合起來,並且做到多機器同步化的工作。他最大的優點是在於不需要考慮資料 ACID,所以速度方面相當的快。

當然,我們可以使用 Database 去做到一模一樣的事情,但是其實 Database 在 ACID 上面已經付出太多 Overhaed。如果今天需要操作的東西,是一些像是 Cache ,Session 之類真的不見就算了的東西的話,你可以考慮使用效率比 Database 快的 Memcached。目前已經有相當多的網站使用 Memcached 的技術,可說是相當成熟。並且在 Web Server 使用考量上,Web Server 通常使用資源是高 CPU 低 Memory ,而 Memcached 是低 CPU 高 Memory 的使用方式,兩者可以結合彼此優缺點,讓 Web Server 跟 Memcached 跑在同一台機器上面來避免浪費資源使用率。

以 Ruby on Rails 來看,Memcached 可以用在
這三個用途。

我目前使用他都是在 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 是非常的簡單,只要用 Gem 安裝 Ruby 的 Memcached Client 即可。

這裡有兩個選擇,一個是出現在很多書上面的 ruby memcache ,也是比較老牌的選擇。
gem i ruby-memcache
但是現在還有更新的選擇, Robotcoop 所開發的 Ruby Memcached Client AP

# gem install memcache-client

要選擇其實是很容易的,因為兩者的 API 實做都一模一樣,應該說 memcached-client 遵照 ruby-memcached 的 API,但是 memcached-client 效能比 ruby-memcached 來得好,所以請用 memcached-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 的準備還算是相當的完整,很多地方都有相當簡單方便的實做。



延伸閱讀


分享到:
评论

相关推荐

    jbuilder_cache_multi

    经过Rails 4.1 + Memcached + Dalli测试 安装 将此行添加到您的应用程序的Gemfile中: gem 'jbuilder_cache_multi' 然后执行: $ bundle 或将其自己安装为: $ gem install jbuilder_cache_multi 用法 为集合中...

    memcached的安装与配置

    memcached的安装 与配置 以及启动rails服务报错的解决方法

    cacheflow:Memcached和Redis的彩色日志记录

    当您的日志级别设置为DEBUG (开发时默认为Rails)时,将记录所有指向Memcached和Redis的命令。 特征 要使日志记录静音,请使用: Cacheflow . silence do # code end 要使命令的日志记录静音,请使用命令创建...

    rails-memcache-dalli:在Rails应用程序中使用Dalli使用Memcache实现缓存

    假设我们有一个带有流行页面的Rails应用程序,该页面加载缓慢并且我们希望提高其性能。 最有效的方法之一是使用缓存。 过去,我们讨论了各种缓存技术,但... 它打算与Memcached服务器一起使用,这意味着该缓存将在多个R

    Rails4-Start-Up:rails4为ruby 2.1.2启动

    缓存:Memcached + redis 任务队列:sidekiq 服务器和站点监控:New relic + monit + god 部署:Capistrano3 邮件发送:sendcloud 反向代理:Nginx Web容器:unicorn 搜索:sunspot 功能组件 搜索系统,使用更强大

    webfaction-rails-environment:使用 monit 和 nginx 为 WebFaction 构建和配置您自己的私有 Rails 环境的脚本

    WebFaction 私有应用程序栈shell 脚本webfaction.sh将自动构建和配置您自己的私有Ruby on Rails堆栈。 它是为用户编写的,但相当通用。...client、memcached php (+ spawn-fcgi) [可选,参见INSTALL_PHP

    开源小区论坛Homeland.zip

    这个项目源自于一个社区网站 V2EX ,它是一个基于 GAE ...这个目前只能在 VPS 上面安装,Ruby 1.9, Rails 3, Memcached, MySQL ,如果你是做 Ruby on Rails 开发的,那部署过程不会难到你的。 标签:Homeland

    capistrano-memcached:Capistrano 任务用于自动和合理的内存缓存配置

    这个插件的目标: Rails 应用程序的自动内存缓存配置不需要手动 ssh到服务器规格: 在服务器上生成配置文件(默认在 /etc/memcached.conf 中) 在 shared/config 中生成 memcached.yml 配置文件,以便 RoR 应用程序...

    阅读本文:使用Redis的池式活动支持兼容缓存

    对于新项目,没有任何理由坚持使用Memcached。 在许多情况下,Redis的速度一样快,即使不是更快,也很有可能在堆栈的其他地方使用。 有关更多详细信息,请参。 Rails 5.2+ Rails 5.2及更高版本具有内置的。内置的...

    crails:Web应用程序的C ++ MVC开发的Crails框架

    使用crails-cache,您将获得一个简单的API,以使用memcached处理缓存 使用crails-mail,您可以轻松呈现和发送邮件 使用crails-image,您可以将图像存储在模型中,并使用Magick ++生成缩略图 使用crails-sent

    model_cache:用于缓存模型代码的 Rails 插件

    模型缓存ModelCache 是一个简单的 Rails 缓存插件,使用memcached 。 它为您的模型提供缓存功能,允许: 基于通用键(ActiveRecord cache_key在幕后添加)在模型实例方法中缓存代码块缓存您的实例方法,可选择使用...

    Redis和Memcached的应用程序级加密-Ruby开发

    加密键,值,列表元素,集合成员和哈希字段,同时仍然能够执行大多数操作:party_popper:斗篷Red Redis和Memcached的应用程序级加密加密密钥,值,列表元素,集合成员和哈希字段,同时仍然能够执行大多数操作:party_...

    电子请愿书:这是英国政府电子请愿书服务的代码库(https:petition.parliament.uk)

    如果您不想使用Docker,则需要安装Ruby(2.4 +),Node(10 +),PostgreSQL(9.6+)和Memcached(1.4+)。 创建数据库 docker-compose run --rm web rake db:setup 创建一个管理员用户 docker-compose run --rm ...

    rack-throttle:用于对传入的HTTP请求进行速率限制的机架中间件

    在任何响应#[] / #[]= (如Ruby的哈希值)或#get / #set (如memcached或Redis)的键/值存储实现中存储限速计数器。 与Ruby标准库中包含的绑定兼容。 与 , , 和 gem兼容。 与的兼容(当前可作为免费Beta版服务...

    基于SemanticUI的音乐社交网站Ting.zip

    Ting 是基于 Ruby on Rails 框架和 Semantic UI 前端界面开发框架的音乐社交网站。 网站后台使用 Ruby on Rails 框架, 创意来自于 @djyde 前阵子发布的一个...Memcached 1.4 ImageMagick 6.8 标签:Ting

    Laragon:适用于现代应用程序的强大工具:Django,Rails,Laravel,Node,Go,Java-开源

    即时设置-极其快速,轻巧,直观且功能强大的通用开发环境,可用于创建具有许多堆栈的现代应用程序:Ruby on Rails,Laravel,Django,Flask,MEAN和Spring Boot。 在MySQL,PostgreSQL,MongoDB,Memcached,Redis...

    编程狂人第九期(2014-1-20)

    Rails 3 升级 Rails 4 中遇到的问题及解决方法 php性能优化 Java中的 equals() 和 hashCode() 契约 程序设计 IOS缓存机制详解 ios系类教程之用instruments来检验你的app Android 学习笔记之 SQLite基础用法 如何...

    从Twitter的架构变迁看Web2.0的架构技术

    其结构是用Rails作前端,C,Scala和Java组成中间的业务层,使用MySQL存储数据。所有的东西都保存在RAM里,而数据库只是用作备份。Rails前端处理展现,缓存组织,DB查询以及同步插入。这一前端主要由几部分客户服务...

    patella:允许人们记忆到 memcache 的 Ruby gem

    记忆到memcached等发生了什么? Patella 最初是一个 gem,用于在后台记住 Rails 应用程序中昂贵的方法调用并异步加载它们。 Jeff Dwyer 在 RailsConf 2012 上讨论过它: 安装 将此行添加到应用程序的 Gemfile 中:...

    dalli-ui:Dalli的Web UI

    Dalli UI是Rails应用程序的可安装引擎,它显示有关 memcached实例的信息,并允许您从Web界面其刷新。 Rails 4安装 将dalli和dalli-ui添加到您的gemfile并bundle install 。 # Gemfile gem 'dalli' gem 'dalli-ui'...

Global site tag (gtag.js) - Google Analytics