2011-02-03 118 views

回答

18

對不起,但沒有。 Memcached使用散列算法,將密鑰分佈在明顯隨機的地方,因此這些密鑰分散在各處。你必須掃描一切才能找到它們。

另外,您應該意識到,按設計,memcached可以隨時因任何原因刪除任何任何密鑰。如果你把東西放進去,你應該意識到你不能依靠它回來。這對於它的原始用例來說是絕對正確的,一個緩存可以減少數據庫中的命中。但如果你想要做一些更復雜的事情,這可能是一個嚴重的問題。

如果這些限制是一個問題,我建議您使用Redis代替。它的行爲與memcached非常相似,只不過它會保留數據,並允許存儲複雜的數據結構。因此,對於您的用例,您可以在Redis中存儲散列,然後再將整個散列拖出。

4

雖然@btilly是說memcached的正確並沒有這樣做本身,您可以通過維護分享您的前綴鍵的索引,讓您再取所有條目效仿(相當有效)匹配某個前綴。

很明顯,這隻適用於您事先選擇的特定密鑰,而不是任意數據,但如果您可以忍受這種限制,則這是非常可行的。其中一位memcache開發人員有a good article on this subject

3

快速命令來搜索如果一個特定的鍵存在時(鍵名稱可以是「grep的正則表達式」)

for i in {1..40}; do (echo "stats cachedump $i 0"; sleep 1; echo "quit";) | telnet localhost 11211 | grep 'APREFIX*\|ANOTHERPREFIX*'; done 
  • 基礎上,討論; | 'ANOTHERPREFIX * APREFIX * \' 從1板坯40
  • 不要錯過grep的一部分
  • 相關問題