Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails.cache.clear certain key names?

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.

like image 940
Shpigford Avatar asked Aug 17 '12 12:08

Shpigford


3 Answers

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' }
like image 145
Sandip Ransing Avatar answered Oct 17 '22 15:10

Sandip Ransing


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).

like image 31
Shpigford Avatar answered Oct 17 '22 13:10

Shpigford


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.

like image 3
fkoessler Avatar answered Oct 17 '22 13:10

fkoessler