是否有可能以某種方式運行Rails.cache.clear
,並且只能使用某個名稱/字符串清除鍵?Rails.cache.clear某些鍵名?
我不想清除整個緩存......只需鍵入名稱中的字符串blog/post
(即,blog/post/1
,blog/post/2
)。
我使用dalli與memcached爲我的緩存和運行Rails 3.0.6。
是否有可能以某種方式運行Rails.cache.clear
,並且只能使用某個名稱/字符串清除鍵?Rails.cache.clear某些鍵名?
我不想清除整個緩存......只需鍵入名稱中的字符串blog/post
(即,blog/post/1
,blog/post/2
)。
我使用dalli與memcached爲我的緩存和運行Rails 3.0.6。
要回答我自己的問題......看來,鑑於我使用memcached,我實際上不能使用delete_if
或delete_matched
,因爲memcached不支持按模式枚舉或查詢密鑰(1)。
這是你如何寫高速緩存 -
Rails.cache.write('key', 'value', :time_to_idle => 60.seconds, :timeToLive => 600.seconds)
,爲了從緩存中刪除,你可以使用delete
行動 -
Rails.cache.delete('key')
刪除多個鍵 -
Rails.cache.delete_if {|k, v| k =~ 'key' }
沒錯,但我需要刪除其名稱中包含某個字符串的所有鍵。例如,鑰匙名稱中包含'blog/post'的所有鑰匙。 – Shpigford 2012-08-17 13:22:53
@Shpigford'Rails.cache'只是一個'哈希'..查看哈希文檔以刪除多個鍵:) – 2012-08-17 14:32:45
@Shpigford查看更新的答案:) – 2012-08-17 14:34:58
您可以使用https://github.com/Phobos98/dalli-delete-matched gem,它爲memcached的dalli存儲添加了一個簡單的delete_matched
方法實現。
這是否適用於多服務器環境?寶石看起來像它存儲在緩存服務器上的密鑰沒有任何警衛,以防止多個作家 – 2017-03-23 19:52:02
這是如何工作的? – Abram 2017-05-25 16:40:16
那麼,使用memcache時的解決方案是什麼? – 2015-08-03 10:41:57