目前rails最新的支持memcache的client是dalli,它的前身是memcache-client,memcached本身并没有为我们提供针对于某个项目、某个类别的、某个页面的过期机制,在它看来都是内存中的存储。
如果我们有多个应用公用memcached,这时的过期机制就显得尤为重要,因为,我们不能让应用之间互相影响。这时可给每个应用设立名空间,例如:
- config.cache_store = :dalli_store, 'cache-1.example.com', 'cache-2.example.com',
- { :namespace => NAME_OF_RAILS_APP, :expires_in => 1.day, :compress => true }
这样各个应用就有自己的过期时间。
另外如果我们想针对个别类亦或者是页面过期,这就需要我们写代码来处理了,比如可以写一个rake或者ruby脚本,
来处理这种过期:例如
- namespace :cache do
- namespace :reset do
- %w{Category Forum Post}.each do |klass|
- desc "Clear the #{klass} cache"
- task klass.underscore.gsub("/","_").pluralize => :environment do
- klass.constantize.reset_cache
- end
- end
- end
- end
然后我们就可以在想要清除某些缓存的时候使用rake,而不用重启memcached来做统一的缓存清除
转载于:https://blog.51cto.com/anhuiliujun/1161696