2012-01-16 71 views
4

我正在運行Ruby on Rails,並使用Dalli gem來訪問memcached。如何刪除memcached中的一系列鍵(使用Dalli + RoR)

問:我怎麼刪除某一範圍的鍵(不是多,而是一個範圍)的東西,如:刪除與以「USERINFO」開始,換句話說鑰匙,我怎麼可以使用通配符所有memcached的條目刪除一系列鍵?

+3

不認爲memcached的支持這樣 – 2012-01-16 14:55:45

回答

0

你應該看看Rails.cache.delete_matched:http://apidock.com/rails/ActiveSupport/Cache/Store/delete_matched

不正是你想要什麼,theorically:

Rails.cache.delete_matched /^USERINFO/

+4

此方法不與達利的工作(或Rails的標準Memcached的緩存存儲)任何東西。 – mkrmr 2012-10-15 10:26:03

+0

您可以嘗試使用這個gem來爲dalli添加delete_matched功能https://github.com/Phobos98/dalli-delete-matched – mgauthier 2014-05-30 15:01:53

0

簡短的回答是,沒有你不想要去做。

dalli寶石,也沒有memcached支持刪除多個密鑰與一個單一的命令開箱,並有很好的理由。由於memcached通過對密鑰進行散列來確定緩存值的位置,因此在具有多個緩存節點的生產環境中,delete_matched操作需要掃描所有節點以查找可能匹配的密鑰。這打敗了memcached的關鍵目標,即表現。

存在幾種擴展dalli的實現,並承諾提供deleted_matched的實現。這些都似乎取決於程序員在性能方面的便利性,所以謹慎使用它們。在使用它們之前查看這些寶石的來源是一個好的開始。


相關問題Is it possible to get/search Memcached keys by a prefix?