Rails 2.1 引入的新缓存特性,可以方便的缓存包括模型在内的任何东西。除基本文件、内存和DRb 存储以外, Memcached 是共享内存缓存的唯一解决方案。感谢 Dylan Stamat 的努力,现在 JRuby (on Rails) 可以使用流行的 Java 分布式缓存 EHCache 作为其新缓存存储的一部分。
在 JEE 的世界里,是使用 EHCache 还是 Memcached 来作为二级缓存的争论由来已久且甚为激烈。尽管Memcached 在LAMP 和RoR 的世界很流行( Linkedin.com 也马上会转向它),但是EHCache 也被包括 Spring 和 Hibernate 在内的很多项目所采用。出于将现有程序从 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 怎么看?
查看英文原文: Rails Caching Reloaded With EHCache
InfoQ 的读者 Ray Krueger 评论道:
另 一个使用 JRuby 和 memcached 实现一致性 hash 的选择是使用 spymemcached 客户端。spymemcached 客户端是一个异步单线 程客户端,在 hibernate-memcached 项目下面工作的非常非常棒。我也在项目中使用过 spymemcached,性能很是不错。
评论