首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails.cache.clear返回零

Rails.cache.clear返回零
EN

Stack Overflow用户
提问于 2017-07-24 11:58:50
回答 2查看 3.5K关注 0票数 2

我有这个设置config.cache_store = :redis_store, ENV['REDIS_CACHE_URL']

代码语言:javascript
运行
复制
$ redis-cli
127.0.0.1:6379> set random_key 1
OK

现在我转到控制台并执行Rails.cache.clear,它返回零

我仍然能够访问红宝石中的密钥random_key。它没有清除缓存。

我也看不出Rails.cache在这里返回了什么,ruby/2.3.4/lib/ruby/gems/2.3.0/gems/railties-4.2.8/lib/rails.rb

Is Rails.cache.clear应该返回true?

如果我的理解有误,谁能帮帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-24 12:11:17

redis-cache将数据存储在特定的命名空间下。

例如,如果您已经根据redis-store配置了文档,那么缓存密钥将存储在cache命名空间中。这意味着,当您Rails.cache.write("random_key", "key")时,cache:random_key键将出现在Redis中。因此,当您使用Rails.cache.clear时,只会删除cache命名空间下的键。

因此,如果您在Redis中手动创建random_keyRails.cache.clear将不会删除它。但是,如果您手动创建cache:random_key,它就会。

票数 5
EN

Stack Overflow用户

发布于 2022-03-01 15:44:50

使用Rails.cache.clear时要小心,它将使应用程序(来源)的所有键失效。

~不确定这是不是这个答案最好的地方~

这篇有用的文章是我理解将Rails版本从5.1+更改为Rails 6.1+时理解缓存的一个很好的方法。本文讨论使用版本控制或不使用版本控制生成缓存密钥的选项。

在我的应用程序实例中,版本控制是必需的,但升级到Rails 6.1时没有打开:

代码语言:javascript
运行
复制
#in application.rb
config.active_record.collection_cache_versioning = true

然后,在调用object.cache_key的应用程序代码中,我不得不将其更改为object.cache_key_with_version (来源)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45280059

复制
相关文章

相似问题

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