¿Buenos ejemplos de python-memcache (memcached) que se usa en Python? [cerrado]

91

Estoy escribiendo una aplicación web usando Python y el marco web.py, y necesito usar Memcached en todo momento.

He estado buscando en Internet tratando de encontrar buena documentación sobre el módulo python-memcached , pero todo lo que pude encontrar fue este ejemplo en el sitio web de MySQL , y la documentación sobre sus métodos no es excelente.

Jonathan Prior
fuente

Respuestas:

145

Es bastante simple. Escribe valores usando claves y tiempos de caducidad. Obtienes valores usando claves. Puede caducar las claves del sistema.

La mayoría de los clientes siguen las mismas reglas. Puede leer las instrucciones genéricas y las mejores prácticas en la página de inicio de Memcached .

Si realmente quieres profundizar en ello, miraría la fuente. Aquí está el comentario del encabezado:

"""
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
fuente
Gracias, los comentarios del código fuente son muy útiles.
Jonathan Prior
No puedo entender qué es 'mc'. ¿Puede usted explicar por favor?
bodacydo
9
mces el objeto Memcache Client, representa la conexión Memcached.
moshen
4
@Kevin 混合 理论 Toda esta pregunta es sobre python-memcached . Eso es lo que proporciona memcache.
Oli
1
@themiurgo, el código anterior es un comentario en el encabezado del código python-memcached real . Así fue en 2009 y así sigue siendo hoy. Los comentarios a lo largo todavía dicen "debe ser la representación de cadena de un entero". Si cree que eso está mal, envíeles un error para que actualicen su documentación.
Oli
43

Te aconsejo que uses pylibmcen su lugar.

Puede actuar como un reemplazo directo de python-memcache, pero mucho más rápido (como está escrito en C). Y puede encontrar documentación útil aquí .

Y a la pregunta, como pylibmc simplemente actúa como un reemplazo directo, aún puede consultar la documentación de pylibmc para su programación python-memcache.

Felix Yan
fuente
3
Tenga en cuenta que pylibmcno funciona en Python 3.
jbg
2
Si bien es cierto, python-memcachedtampoco es compatible con Python 3. pylibmc se está preparando actualmente para un lanzamiento con soporte para Python 3
anthonyryan1
10
Ambos ahora son compatibles con Python3.
Aidin
1
Solo una nota sobre la instalación: apt-get install libmemcached-devy luegopip install pylibmc
Christian
El problema para mí fue que pylibmc requiere herramientas de compilación en Linux y es difícil de instalar en Windows. Utilizo un entorno mixto win / lin, así que volví a cambiar a python-memcached por razones de compatibilidad. El mayor problema fue la política que tengo contra la instalación de herramientas de compilación en servidores de producción de Linux. La diferencia de velocidad entre python-memcached y pylibmc casi nunca debería ser un problema.
Cris
7

Una buena regla general: use el sistema de ayuda integrado en Python. Ejemplo a continuación ...

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
fuente
Esto ya no es válido. 2.7.3 no se envía con un módulo de Memcache instalado de forma predeterminada, y el enlace a la documentación también está roto.
iandouglas
1
@iandouglas: lo que escribe es cierto para mi debian 6.0.7, pero solo tuve apt-get install python-memcacheque obtener el módulo.
jfg956