具有过期密钥的缓存



我正在开发一个mashup站点,希望限制抓取源站点的次数。本质上,我需要一位数据,一个整数,并希望在定义的过期期内缓存它。

为了澄清,我只想缓存整数,而不是整个页面源。

有没有一个ruby或rails功能或gem已经为我完成了这一点?

是的,有ActiveSupport::Cache::Store

一个抽象缓存存储类。存在多个缓存存储实现,每个实现都有自己的附加功能。请参阅ActiveSupport::Cache模块下的类,例如。ActiveSupport::Cache::MemCacheStore。MemCacheStore当前是大型生产网站最受欢迎的缓存存储。

某些实现可能不支持基本方法之外的所有方法获取、写入、读取的缓存方法是否存在?,并删除。

ActiveSupport::Cache::Store可以存储任何可序列化的Ruby对象。

http://api.rubyonrails.org/classes/ActiveSupport/Cache/Store.html

cache = ActiveSupport::Cache::MemoryStore.new
cache.read('Chicago')   # => nil 
cache.write('Chicago', 2707000)
cache.read('Chicago')   # => 2707000

关于到期时间,这可以通过将时间作为初始化参数来完成

cache = ActiveSupport::Cache::MemoryStore.new(expires_in: 5.minutes)

如果你想缓存一个具有不同到期时间的值,你也可以在向缓存写入值时设置它

cache.write(key, value, expires_in: 1.minute) # Set a lower value for one entry

请参阅使用Rails缓存,特别是ActiveSupport::Cache::Store:expires_in选项。

例如,你可以去:

value = Rails.cache.fetch('key', expires_in: 1.hour) do
    expensive_operation_to_compute_value()
end

最新更新