Rails.cache.clear certain key names?
Solution 1
To answer my own question...it seems that given I'm using memcached, I actually can't use delete_if
or delete_matched
because memcached does not support enumerating or querying keys by pattern (1).
Solution 2
This is how you can write to cache -
Rails.cache.write('key', 'value', :time_to_idle => 60.seconds, :timeToLive => 600.seconds)
and in order to delete from cache you can use delete
action -
Rails.cache.delete('key')
Delete multiple keys -
Rails.cache.delete_if {|k, v| k =~ 'key' }
Solution 3
You can use the https://github.com/Phobos98/dalli-delete-matched gem that adds a simple implementation of delete_matched
method for dalli store with memcached.
Related videos on Youtube
Shpigford
Maker. Dabbler. Founder of Baremetrics. I can't stop starting things. Cedar & Sail, Laser Tweets, Founder Chats, Droptune, Rockburg. Bearded.
Updated on July 05, 2022Comments
-
Shpigford almost 2 years
Is it possible to somehow run
Rails.cache.clear
and only clear keys with a certain name/string?I don't want to clear the entire cache...just keys with the string
blog/post
in the name (ie.blog/post/1
,blog/post/2
).I'm using dalli with memcached for my cache and running Rails 3.0.6.
-
Shpigford almost 12 yearsRight, but I need to delete all keys that contain a certain string in their name. For instance, all keys that have
blog/post
in the name of the key. -
Sandip Ransing almost 12 years@Shpigford
Rails.cache
is just ahash
..look for the hash documentation in order to delete multiple keys :) -
Shpigford almost 12 yearsI'm geting an 'undefined method' error for
delete_if
. I'm running Rails 3.0.6. -
Shpigford almost 12 yearsAlso, forgot to mention, I'm using Dalli w/ memcached as my cache.
-
sites almost 10 yearstime to idle and time to live seems for EH cache only guides.rubyonrails.org/…
-
Gaurav Saini almost 9 yearsSo, What is the solution while using memcache ?
-
Stijn Van Antwerpen over 7 yearsDoes that work in a multi-server environment? The gem looks like it stores the keys on the cache server without any guards to prevent multiple writers