簡體   English   中英

Rails.cache.clear 返回 nil

[英]Rails.cache.clear returns nil

我有這個設置config.cache_store =:redis_store, ENV['REDIS_CACHE_URL']

$ redis-cli
127.0.0.1:6379> set random_key 1
OK

現在我 go 到控制台並執行Rails.cache.clear返回 nil

而且我仍然能夠訪問 redis-cli 中的密鑰random_key 它沒有清除緩存。

我也看不懂Rails.cache在這里返回的內容ruby/2.3.4/lib/ruby/gems/2.3.0/gems/railties-4.2.8/lib/rails.rb

Rails.cache.clear 應該返回 true 嗎?

如果我的理解有誤,有人可以幫助我嗎?

redis-cache將數據存儲在特定的名稱空間下。

例如,如果您已按照Documentation來配置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 ,它將成功。

使用Rails.cache.clear時要小心,它會使應用程序的所有密鑰失效(來源)

[~不確定這是否是這個答案的最佳位置~]

這篇有用的文章是我理解將 Rails 版本從 5.1+ 更改為 Rails 6.1+ 時的緩存的好方法。 本文討論了在有或沒有版本控制的情況下生成緩存鍵的選項。

在我的應用程序實例中,升級到 Rails 6.1 時需要版本控制但未打開:

#in application.rb
config.active_record.collection_cache_versioning = true

然后在調用object.cache_key的應用程序代碼中,我不得不將其更改為object.cache_key_with_version (source)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM