Rails.cache.clear 返回 nil

gat*_*tes 3 caching ruby-on-rails

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

$ redis-cli
127.0.0.1:6379> set random_key 1
OK
Run Code Online (Sandbox Code Playgroud)

现在我转到控制台并执行Rails.cache.clear返回 nil 的操作

我仍然能够访问random_keyredis-cli 中的密钥。它没有清除缓存。

我也无法读取Rails.cache这里返回的内容ruby/2.3.4/lib/ruby/gems/2.3.0/gems/railties-4.2.8/lib/rails.rb

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

如果我的理解有误,有人可以帮助我吗?

Igo*_*dov 6

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

例如,如果您已redis-store根据Documentation进行配置,则缓存键将存储在cache命名空间下。这意味着,当您输入Rails.cache.write("random_key", "key")一个密钥时cache:random_key,Redis 中就会出现该密钥。因此,当您删除时,只会删除命名空间Rails.cache.clear下的键。cache

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