De bons exemples de python-memcache (memcached) utilisé en Python? [fermé]

91

J'écris une application Web en utilisant Python et le framework web.py, et je dois utiliser Memcached partout.

J'ai cherché sur Internet pour essayer de trouver de la bonne documentation sur le module python-memcached , mais tout ce que j'ai pu trouver était cet exemple sur le site Web MySQL , et la documentation sur ses méthodes n'est pas excellente.

Jonathan Prior
la source

Réponses:

145

C'est assez simple. Vous écrivez des valeurs à l'aide de clés et de délais d'expiration. Vous obtenez des valeurs à l'aide de clés. Vous pouvez expirer les clés du système.

La plupart des clients suivent les mêmes règles. Vous pouvez lire les instructions génériques et les meilleures pratiques sur la page d'accueil de Memcached .

Si vous voulez vraiment creuser dedans, je regarderais la source. Voici le commentaire d'en-tête:

"""
client module for memcached (memory cache daemon)

Overview
========

See U{the MemCached homepage<http://www.danga.com/memcached>} for more about memcached.

Usage summary
=============

This should give you a feel for how this module operates::

    import memcache
    mc = memcache.Client(['127.0.0.1:11211'], debug=0)

    mc.set("some_key", "Some value")
    value = mc.get("some_key")

    mc.set("another_key", 3)
    mc.delete("another_key")

    mc.set("key", "1")   # note that the key used for incr/decr must be a string.
    mc.incr("key")
    mc.decr("key")

The standard way to use memcache with a database is like this::

    key = derive_key(obj)
    obj = mc.get(key)
    if not obj:
        obj = backend_api.get(...)
        mc.set(key, obj)

    # we now have obj, and future passes through this code
    # will use the object from the cache.

Detailed Documentation
======================

More detailed documentation is available in the L{Client} class.
"""
Oli
la source
Merci, les commentaires sur le code source sont très utiles.
Jonathan Prior
Je ne peux pas comprendre ce qu'est «mc». Pouvez-vous expliquer?
bodacydo
9
mcest l'objet Client Memcache, il représente la connexion Memcached.
moshen
4
@Kevin 混合 理论 Toute cette question concerne python-memcached . C'est ce que fournit memcache.
Oli
1
@themiurgo le code ci-dessus est un commentaire dans l'en-tête du code python-memcached réel . C'était comme ça en 2009 et c'est encore comme ça aujourd'hui. Tout au long des commentaires, il est toujours dit "ce doit être la représentation sous forme de chaîne d'un entier". Si vous pensez que c'est faux, signalez un bogue avec eux pour qu'ils mettent à jour leur documentation.
Oli
43

Je vous conseillerais d'utiliser à la pylibmcplace.

Il peut agir comme un remplacement instantané de python-memcache, mais beaucoup plus rapidement (comme il est écrit en C). Et vous pouvez trouver une documentation pratique à ce sujet ici .

Et à la question, comme pylibmc agit simplement comme un remplacement instantané, vous pouvez toujours vous référer aux documentations de pylibmc pour votre programmation python-memcache.

Félix Yan
la source
3
Notez que pylibmccela ne fonctionne pas sur Python 3.
jbg
2
Bien que vrai, python-memcachedne prend pas en charge Python 3 non plus. pylibmc prépare actuellement une version avec le support de Python 3
anthonyryan1
10
Les deux prennent désormais en charge Python3.
Aidin
1
Juste une note sur l'installation: apt-get install libmemcached-devet puispip install pylibmc
Christian
Le problème pour moi était que pylibmc nécessite des outils de compilation sur Linux et est difficile à installer sur Windows. J'utilise un environnement mixte win / lin, je suis donc revenu à python-memcached pour des raisons de compatibilité. Le plus gros problème était la politique que j'ai contre l'installation d'outils de compilation sur les serveurs de production Linux. La différence de vitesse entre python-memcached et pylibmc ne devrait presque jamais être un problème.
Cris
7

Une bonne règle de base: utilisez le système d'aide intégré à Python. Exemple ci-dessous ...

jdoe@server:~$ python
Python 2.7.3 (default, Aug  1 2012, 05:14:39) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import memcache
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'memcache']
>>> help(memcache)

------------------------------------------
NAME
    memcache - client module for memcached (memory cache daemon)

FILE
    /usr/lib/python2.7/dist-packages/memcache.py

MODULE DOCS
    http://docs.python.org/library/memcache

DESCRIPTION
    Overview
    ========

    See U{the MemCached homepage<http://www.danga.com/memcached>} for more about memcached.

    Usage summary
    =============
...
------------------------------------------
Yarnix
la source
Ce n'est plus valable. 2.7.3 n'est pas livré avec un module Memcache installé par défaut, et le lien vers la documentation est également rompu.
iandouglas
1
@iandouglas: ce que vous écrivez est vrai pour mon debian 6.0.7, mais je n'ai eu apt-get install python-memcachequ'à récupérer le module.
jfg956