web-dev-qa-db-fra.com

Rails.cache.clear certains noms de clé?

Est-il possible d'exécuter en quelque sorte Rails.cache.clear et effacer uniquement les clés avec un certain nom/chaîne?

Je ne veux pas effacer tout le cache ... juste des clés avec la chaîne blog/post dans le nom (ie. blog/post/1, blog/post/2).

J'utilise dalli avec memcached pour mon cache et j'exécute Rails 3.0.6.

61
Shpigford

Pour répondre à ma propre question ... il semble que, étant donné que j'utilise memcached, je ne peux pas utiliser delete_if ou delete_matched car memcached ne prend pas en charge l'énumération ou l'interrogation des clés par modèle ( 1 ).

13
Shpigford

Voici comment vous pouvez écrire dans le cache -

Rails.cache.write('key', 'value', :time_to_idle => 60.seconds, :timeToLive => 600.seconds)

et pour supprimer du cache, vous pouvez utiliser l'action delete -

Rails.cache.delete('key')

Supprimer plusieurs clés -

Rails.cache.delete_if {|k, v| k =~ 'key' }
100
Sandip Ransing

Vous pouvez utiliser la gemme https://github.com/Phobos98/dalli-delete-matched qui ajoute une implémentation simple de delete_matched méthode pour le magasin dalli avec memcached.

2
fkoessler