2009-10-26 10 views
1

Nous utilisons memcache dans plusieurs de nos applications Rails. Maintenant, je me demandais: existe-t-il un moyen d'obtenir une liste de tous les objets stockés dans memcache, y compris la quantité de données que chaque valeur occupe?Existe-t-il un "catalogue" memcache?

.: par exemple

key  | memory(Bytes) | % 
----------------------------------- 
foo_key | 15013   | 0.3 
bar_key | 2201   | 0.05 

Impossible de trouver quoi que ce soit dans les docs ...

Merci

Matt

Répondre

5

Non, nous avons pas l'intention de soutenir cette fonctionnalité.

Actuellement, toutes les opérations memcached sont O (1) (qui inclut le vidage). Avoir une opération qui vous donne une liste de clés ne peut pas satisfaire cette contrainte. Cela nécessiterait des verrous qui seront conservés pendant la durée de la demande, et vous donnerait des informations qui pourraient être inexactes au moment même où vous les voyez. C'est le genre de chose que les gens demandent fréquemment, mais personne n'a jamais présenté un cas d'utilisation où a) ils en avaient besoin et b) ils utilisaient memcached d'une manière qui n'était pas nuisible à leur environnement.

Pensez Heisenberg incertitude principal répond à l'entreposage éphémère.

+0

Merci, Dustin. Nous sommes juste curieux de voir quelle application Rails prend quelle quantité de mémoire dans memcache et comment nous pourrions l'optimiser. Tout cela en dehors de l'application, bien sûr. Merci pour votre message! – Matt

+0

La mémoire pour une application particulière va et vient dans memcached. L'application qui occupe le plus de mémoire peut changer tout au long de la journée. Celui qui est le plus actif utilise probablement plus de mémoire que celui qui est le moins actif. Il est assez facile d'avoir accès à l'accès au journal pour pouvoir au moins avoir une idée. Regardez les statistiques d'expulsion et vous saurez si cela compte. – Dustin

+0

(et désolé pour le mauvais principe d'orthographe) – Dustin

0

Non. C'est un cache, pas une base de données. Si vous devez faire des choses comme ça, vous ferez mieux d'autre chose que Memcached.

Voir la FAQ pour plus information

0

Memcached n'a jamais agi comme une base de données beaucoup plus, être capable d'interroger un ensemble de lignes et de tels.

Si vous voulez une base de données basée sur la mémoire, vous pouvez aller avec MySQL et créer des tables MEMORY. Ils fonctionnent purement en mémoire, en contournant les accès à base de disque lent pour vous donner des performances plus élevées.