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