【问题标题】:checking ttl for Rails.cache object检查 ttl 的 Rails.cache 对象
【发布时间】:2014-09-13 19:24:58
【问题描述】:

所以我有一些项目存储在 Rails.cache 中,我总是用 :expires_in => 5.minutes 写它们

我的问题是,有没有办法查看缓存条目上的 ttl 是什么?

我知道 activesupport 中的入口类有一个方法,但我似乎无法从 Rails.cache 方法中获取入口对象。

顺便说一句,我正在实施速率限制。

【问题讨论】:

  • 不要相信我的话,但我认为没有办法。 expires_in 是内部存储在 memcached 中的参数,不能取出。
  • 是的,我怀疑没有办法得到它,特别是因为它在使用 rails 内存时不可用,我想我会问一下,以防万一有人发现它

标签: ruby-on-rails caching time ttl


【解决方案1】:

您可以使用以下命令检查 Rails 缓存中的 ttl。

Rails.cache.data.ttl("yourkey")

【讨论】:

    【解决方案2】:

    如果您的 Rails.cache 是 FileStore,并且没有要查询的 .data,您需要引用包含相关项目的文件:

    fpath = Rails.cache.send :key_file_path, "yourkey"
    cache_entry = Marshal.load File.read fpath
    expiration = Time.at cache_entry.expires_at
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-04
      • 2013-01-17
      • 1970-01-01
      • 2018-12-06
      • 2014-03-01
      • 2017-01-08
      • 1970-01-01
      • 2014-04-07
      相关资源
      最近更新 更多