最新Rails缓存插件 cache-money
程序员文章站
2022-03-23 13:45:03
...
在过去的几年中Twitter一直被视为Rails应用的代表作,在一段时间内还曾因为网站性能不佳,常被拿来作为"Rails无法扩展的"典型例子,但是现在Twitter的性能问题已经解决,它开始回馈一些解决方案给Rails社区了。
cache-money是Twitter最近贡献一个缓存插件,和常见的cache plugin不同,它提供的是write-through的缓存模式:在ActiveRecord对象更新的时候不是将缓存中的数据清除,而是直接将更新的内容写入到缓存中去。可以参考这篇文章 http://magicscalingsprinkles.wordpress.com/2008/11/24/write-through-cacheing-is-an-essential-part-of-a-healthy-scaling-strategy/
cache-money有许多很棒的特性:
1. 缓存自动清除机制(利用after_save/after_destroy)
2. 支持事务,由于rails的Active Record没有提供after_commit机制,目前常见的缓存插件在高并发下会出现缓存更新竞争冲突,而这个特性对于解决这个问题会很有帮助:
3. 支持非主键的缓存,对于一些常用的非主键查找,比如根据用户名找用户,很有帮助:
更多的特性请参考这篇博客:http://magicscalingsprinkles.wordpress.com/2008/12/11/introducing-cache-money/
目前它处于RC版本,你可以从github上check out最新代码:
http://github.com/nkallen/cache-money/tree/master
cache-money是Twitter最近贡献一个缓存插件,和常见的cache plugin不同,它提供的是write-through的缓存模式:在ActiveRecord对象更新的时候不是将缓存中的数据清除,而是直接将更新的内容写入到缓存中去。可以参考这篇文章 http://magicscalingsprinkles.wordpress.com/2008/11/24/write-through-cacheing-is-an-essential-part-of-a-healthy-scaling-strategy/
cache-money有许多很棒的特性:
1. 缓存自动清除机制(利用after_save/after_destroy)
2. 支持事务,由于rails的Active Record没有提供after_commit机制,目前常见的缓存插件在高并发下会出现缓存更新竞争冲突,而这个特性对于解决这个问题会很有帮助:
CACHE.transaction do CACHE.set(k, v) raise end
3. 支持非主键的缓存,对于一些常用的非主键查找,比如根据用户名找用户,很有帮助:
class User index :name end User.find_by_name "javaeye"
更多的特性请参考这篇博客:http://magicscalingsprinkles.wordpress.com/2008/12/11/introducing-cache-money/
目前它处于RC版本,你可以从github上check out最新代码:
http://github.com/nkallen/cache-money/tree/master