Rails.cache.clear certain key names?

58,652

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.

Share:
58,652

Related videos on Youtube

Shpigford
Author by

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, 2022

Comments

  • Shpigford
    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
    Shpigford almost 12 years
    Right, 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
    Sandip Ransing almost 12 years
    @Shpigford Rails.cache is just a hash ..look for the hash documentation in order to delete multiple keys :)
  • Shpigford
    Shpigford almost 12 years
    I'm geting an 'undefined method' error for delete_if. I'm running Rails 3.0.6.
  • Shpigford
    Shpigford almost 12 years
    Also, forgot to mention, I'm using Dalli w/ memcached as my cache.
  • sites
    sites almost 10 years
    time to idle and time to live seems for EH cache only guides.rubyonrails.org/…
  • Gaurav Saini
    Gaurav Saini almost 9 years
    So, What is the solution while using memcache ?
  • Stijn Van Antwerpen
    Stijn Van Antwerpen over 7 years
    Does 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