我在很多地方搜索了这个问题,但没有找到答案。根据rails指南和类似的关于缓存的资料,rails可以使用这样一种缓存类型:内存中、文件存储、memcached、自定义缓存类,等等。
但是,如果我想在一个应用程序中使用两种或三种缓存类型,这取决于缓存的实体,该怎么办?
例如(一个高负载的新闻聚合器):我有一对前端rails服务器,一对服务器分片MongoDB和一个服务器memcached。如果我想让
-
前端的每个节点内存缓存,用于非常常用的小集合(避免从memcached获取数据的网络延迟)的新闻部分和支持数据
-
memcached for most read new news
-
文件存储缓存(可以存储在所有前端挂载的一个网络文件存储中)用于存档新闻(必须缓存以避免频繁的标记处理,但太大而无法存储在内存中)
AFAIK没有缓存插件或机制可以实现您想要的精细定制。您总是可以根据缓存的内容编写自己的缓存存储,并将其委托给其他子系统。
我也在寻找同样的东西。"第2级"可能就是你要找的。Repo: https://github.com/mezis/level2 Rubygems入口:https://rubygems.org/gems/level2/versions/0.2.5一个巨大的问题是它不能与dali一起工作,这是与memcached交互的正常方式:https://github.com/mezis/level2/issues/6
我也发现了layercake,但似乎被遗弃了:https://github.com/phaza/layercake
我真的希望Rails有这样的东西,这似乎是一个普遍的愿望。
我正在考虑自己写这样的东西,或者至少为本地内存缓存创建一个单独的助手&然后使用"normal"Rails"正常"缓存系统缓存调用,作为解决此问题的一部分:https://github.com/coreinfrastructure/best-practices-badge/issues/1481