我正在運行Ruby on Rails,並使用Dalli gem來訪問memcached。如何刪除memcached中的一系列鍵(使用Dalli + RoR)
問:我怎麼刪除某一範圍的鍵(不是多,而是一個範圍)的東西,如:刪除與以「USERINFO」開始,換句話說鑰匙,我怎麼可以使用通配符所有memcached的條目刪除一系列鍵?
我正在運行Ruby on Rails,並使用Dalli gem來訪問memcached。如何刪除memcached中的一系列鍵(使用Dalli + RoR)
問:我怎麼刪除某一範圍的鍵(不是多,而是一個範圍)的東西,如:刪除與以「USERINFO」開始,換句話說鑰匙,我怎麼可以使用通配符所有memcached的條目刪除一系列鍵?
你應該看看Rails.cache.delete_matched:http://apidock.com/rails/ActiveSupport/Cache/Store/delete_matched
不正是你想要什麼,theorically:
Rails.cache.delete_matched /^USERINFO/
簡短的回答是,沒有你不想要去做。
該dalli
寶石,也沒有memcached
支持刪除多個密鑰與一個單一的命令開箱,並有很好的理由。由於memcached通過對密鑰進行散列來確定緩存值的位置,因此在具有多個緩存節點的生產環境中,delete_matched
操作需要掃描所有節點以查找可能匹配的密鑰。這打敗了memcached
的關鍵目標,即表現。
存在幾種擴展dalli
的實現,並承諾提供deleted_matched
的實現。這些都似乎取決於程序員在性能方面的便利性,所以謹慎使用它們。在使用它們之前查看這些寶石的來源是一個好的開始。
相關問題Is it possible to get/search Memcached keys by a prefix?
不認爲memcached的支持這樣 – 2012-01-16 14:55:45