借助 EHCache,Rails 缓存重装上阵

  • Sebastien Auvray
  • 李明(nasi)

2008 年 8 月 21 日

话题:RubyRuby on Rails语言 & 开发

Rails 2.1 引入的新缓存特性,可以方便的缓存包括模型在内的任何东西。除基本文件、内存和 DRb 存储以外,Memcached是共享内存缓存的唯一解决方案。感谢Dylan Stamat的努力,现在 JRuby (on Rails) 可以使用流行的 Java 分布式缓存EHCache作为其新缓存存储的一部分。
在 JEE 的世界里,是使用 EHCache 还是 Memcached 来作为二级缓存的争论由来已久且甚为激烈。尽管 Memcached 在 LAMP 和 RoR 的世界很流行(Linkedin.com马上会转向它),但是 EHCache 也被包括SpringHibernate在内的很多项目所采用。出于将现有程序从 MRI Ruby 移植到 JRuby 的需求,Dylan Stamat将 EHCache 移植到了 JRuby,添加了 EhcacheStore 作为新的缓存存储。
在 MRI 的世界里,我们使用的是 memcached,是一个 libmemcached 的 C 客户端的 Ruby 接口。它也是目前唯一支持一致性 hash 的 Ruby 程序库,需要在生产环境下工作。如果是 JRuby 的话,就很多不同的选择。一个是可以通过 JNA 或者 JRuby FFI 或者其他什么编写自己的 hook 到 libmemcached 中。另一个就是寻求 Java 其他的缓存解决方案,无疑 Ehcache 是首选了。
你对在 JRuby 使用 EHcache 怎么看?

InfoQ 的读者 Ray Krueger 评论道:

另 一个使用 JRuby 和 memcached 实现一致性 hash 的选择是使用 spymemcached 客户端。spymemcached 客户端是一个异步单线 程客户端,在 hibernate-memcached 项目下面工作的非常非常棒。我也在项目中使用过 spymemcached,性能很是不错。
RubyRuby on Rails语言 & 开发