首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rails如何使用部分匹配删除缓存键

rails如何使用部分匹配删除缓存键
EN

Stack Overflow用户
提问于 2013-10-26 14:18:58
回答 1查看 17.2K关注 0票数 21

我使用的是redis-rails。对于缓存键,我使用了一个数组:

代码语言:javascript
复制
Rails.cache.fetch([self.class.name, :translated_attribute, id, field, I18n.locale]) do
  self.read_attribute field, locale: I18n.locale
end

现在我需要删除与self.class.name,:translated_attribute,id匹配的所有缓存。我知道它有delete_matched,在key之后接受通配符(*)进行部分匹配。

但我不知道生成的确切密钥是什么。现在我需要知道当我们使用数组作为键时,它是如何生成键的。我的意思是,如果我使用:foo,:bar,:dum作为缓存键,那么缓存区中的确切键是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-26 14:51:24

缺省的rails缓存键格式为: class/id-timestamp

我通常不使用rails默认的缓存键格式,而是创建自己的键,以便在redis中更容易操作。

代码语言:javascript
复制
cache_key = "#{self.class.name}/#{translated_attribute}/#{id}/#{field}/#{I18n.locale}"

Rails.cache.fetch(cache_key) do
  self.read_attribute field, locale: I18n.locale
end

Rails.cache.delete(cache_key)
Rails.cache.delete_matched("#{self.class.name}*#{id}*")
票数 37
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19603598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档