Bons exemplos de python-memcache (memcached) sendo usado em Python? [fechadas]

91

Estou escrevendo um aplicativo da web usando Python e a estrutura web.py e preciso usar memcached.

Tenho pesquisado na Internet tentando encontrar alguma boa documentação sobre o módulo python-memcached , mas tudo que consegui encontrar foi este exemplo no site do MySQL , e a documentação sobre seus métodos não é boa.

Jonathan Prior
fonte

Respostas:

145

É bastante simples. Você escreve valores usando chaves e tempos de expiração. Você obtém valores usando chaves. Você pode expirar as chaves do sistema.

A maioria dos clientes segue as mesmas regras. Você pode ler as instruções genéricas e práticas recomendadas na página inicial do memcached .

Se você realmente quiser se aprofundar, eu daria uma olhada na fonte. Aqui está o comentário do cabeçalho:

"""
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
fonte
Obrigado, os comentários do código-fonte são muito úteis.
Jonathan Prior
Não consigo entender o que é 'mc'. Você pode explicar, por favor?
bodacydo
9
mcé o objeto Cliente do Memcache, ele representa a conexão do memcached.
moshen
4
@Kevin 混合 理论 Toda essa questão é sobre o python-memcached . Isso é o que oferece memcache.
Oli
1
@themiurgo o código acima é um comentário no cabeçalho do código python-memcached real . Foi assim em 2009 e ainda é hoje. Os comentários ainda dizem "deve ser a representação em string de um inteiro". Se você acha que isso está errado, registre um bug com eles para que eles atualizem sua documentação.
Oli,
43

Aconselho você a usar em seu pylibmclugar.

Ele pode atuar como um substituto imediato do python-memcache, mas muito mais rápido (como está escrito em C). E você pode encontrar documentação útil para isso aqui .

E para a questão, como o pylibmc atua apenas como um substituto imediato, você ainda pode consultar as documentações do pylibmc para sua programação python-memcache.

Felix Yan
fonte
3
Observe que pylibmcnão funciona no Python 3.
jbg
2
Embora seja verdade, também python-memcachednão oferece suporte a Python 3. pylibmc está atualmente se preparando para um lançamento com suporte para Python 3
anthonyryan1
10
Ambos agora suportam Python3.
Aidin de
1
Apenas uma nota sobre a instalação: apt-get install libmemcached-deve entãopip install pylibmc
Christian
O problema para mim é que o pylibmc requer ferramentas de compilação no Linux e é difícil de instalar no Windows. Eu uso o ambiente win / lin misto, então voltei para o python-memcached por motivos de compatibilidade. O maior problema foi a política que tenho contra a instalação de ferramentas de construção em servidores de produção Linux. A diferença de velocidade entre o python-memcached e o pylibmc quase nunca deve ser um problema.
Cris
7

Uma boa regra prática: use o sistema de ajuda embutido em Python. Exemplo abaixo ...

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
fonte
Isso não é mais válido. 2.7.3 não é fornecido com um módulo memcache instalado por padrão e o link para a documentação também está quebrado.
iandouglas
1
@iandouglas: o que você escreveu é verdade para o meu debian 6.0.7, mas eu só tive apt-get install python-memcacheque pegar o módulo.
jfg956