ruby-on-rails - 如何按命名空间手动使 Rails 低缓存过期

标签 ruby-on-rails ruby caching

我们有:

Rails.cache.fetch("google.com/videos", expires_in: 12.hours) { # some request }
Rails.cache.fetch("google.com/images", expires_in: 12.hours) { # some request }
Rails.cache.fetch("stackoverflow.com/questions", expires_in: 12.hours) { # some request }

如何通过 "google.com" 键或 "stackoverflow.com" 使 Rails 缓存过期?

最佳答案

如果您使用默认缓存存储,即 FileStoreMemoryStore ,使用 delete_matched method 应该可以仅删除键的子集。 ,例如:

Rails.cache.delete_matched(/^google\.com/)

如果您使用 memcached,这是不可能的,您必须手动删除 fetch 调用中使用的所有键。或者,根本不用担心过期,而是使用在每次相关更改及其包含的数据时更改的 key ,请参见例如this blog post .

关于ruby-on-rails - 如何按命名空间手动使 Rails 低缓存过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36152755/

相关文章:

ruby-on-rails - 使用单表继承更改 Rails 中 ActiveRecord 类的类型

ruby - 在 Ruby 中查找包含 Enumerable 模块的所有类

spring - 如何告诉 Spring 缓存不要在 @Cacheable 注释中缓存空值

ruby-on-rails - Carrierwave 对不同文件类型的不同大小限制

ruby-on-rails - Sqlite3 到 Postgresql 迁移通过 taps 错误拉

ruby-on-rails - 指定要从 before_filter 中排除的 Controller

ruby-on-rails - 仅当 Rails 中存在另一个变量时才设置变量

Ruby 字符串数组 : split into smallest pieces

java - 如何实现最近使用的缓存

caching - 如果什么都没有过期,Redis maxmemory-policy volatile-lru 会驱逐吗?