【问题标题】:Rails.cache.clear certain key names?Rails.cache.clear 某些键名?
【发布时间】:2012-08-13 21:06:49
【问题描述】:

是否有可能以某种方式运行 Rails.cache.clear 并且只清除具有特定名称/字符串的键?

我不想清除整个缓存...只是名称中带有字符串blog/post 的键(即blog/post/1blog/post/2)。

我正在使用 dalli 和 memcached 作为我的缓存并运行 Rails 3.0.6。

【问题讨论】:

    标签: ruby-on-rails caching memcached dalli


    【解决方案1】:

    这就是你可以写入缓存的方式 -

    Rails.cache.write('key', 'value', :time_to_idle => 60.seconds, :timeToLive => 600.seconds)
    

    为了从缓存中删除,您可以使用delete 操作 -

    Rails.cache.delete('key')
    

    删除多个键 -

    Rails.cache.delete_if {|k, v| k =~ 'key' }
    

    【讨论】:

    • 对,但我需要删除所有名称中包含特定字符串的键。例如,所有键名中包含blog/post 的键。
    • @Shpigford Rails.cache 只是一个hash ..查找哈希文档以删除多个键:)
    • 我收到delete_if 的“未定义方法”错误。我正在运行 Rails 3.0.6。
    • 另外,忘了提一下,我正在使用带有 memcached 的 Dalli 作为我的缓存。
    • 空闲时间和生存时间似乎仅适用于 EH 缓存 guides.rubyonrails.org/…
    【解决方案2】:

    回答我自己的问题...似乎鉴于我使用的是 memcached,我实际上不能使用 delete_ifdelete_matched 因为 memcached 不支持按模式枚举或查询键 (1) .

    【讨论】:

    • 那么,使用 memcache 的解决方案是什么?
    【解决方案3】:

    您可以使用https://github.com/Phobos98/dalli-delete-matched gem,它为带有memcached 的dalli store 添加了delete_matched 方法的简单实现。

    【讨论】:

    • 这是否适用于多服务器环境? gem 看起来像是将密钥存储在缓存服务器上,没有任何保护措施以防止多个写入者
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 2021-10-09
    相关资源
    最近更新 更多