Buoni esempi di python-memcache (memcached) utilizzato in Python? [chiuso]


91

Sto scrivendo un'app web usando Python e il framework web.py e devo usare memcached dappertutto.

Ho cercato in Internet cercando di trovare una buona documentazione sul modulo python-memcached , ma tutto ciò che ho trovato è stato questo esempio sul sito Web MySQL e la documentazione sui suoi metodi non è eccezionale.

Risposte:


145

È abbastanza semplice. Scrivi valori utilizzando chiavi e tempi di scadenza. Ottieni valori usando le chiavi. Puoi far scadere le chiavi dal sistema.

La maggior parte dei clienti segue le stesse regole. Puoi leggere le istruzioni generiche e le migliori pratiche sulla home page di memcached .

Se vuoi davvero approfondire, guarderei la fonte. Ecco il commento dell'intestazione:

"""
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.
"""

Grazie, i commenti sul codice sorgente sono molto utili.
Jonathan Prior

Non riesco a capire cosa sia "mc". Puoi spiegare per favore?
bodacydo

9
mcè l'oggetto Memcache Client, rappresenta la connessione memcached.
moshen

4
@Kevin 混合 理论 L'intera domanda riguarda python-memcached . Questo è ciò che fornisce memcache.
Oli

1
@themiurgo il codice sopra è un commento nell'intestazione dell'attuale codice python-memcached . È così nel 2009 ed è così ancora oggi. I commenti in tutto dicono ancora "deve essere la rappresentazione di stringa di un numero intero". Se pensi che sia sbagliato, segnala loro un bug per convincerli ad aggiornare la loro documentazione.
Oli

43

Io vi consiglio di usare pylibmcinvece.

Può agire come un sostituto immediato di python-memcache, ma molto più velocemente (come è scritto in C). E puoi trovare una pratica documentazione qui .

E alla domanda, poiché pylibmc funge solo da sostituto immediato, puoi ancora fare riferimento alle documentazioni di pylibmc per la tua programmazione python-memcache.


3
Nota che pylibmcnon funziona su Python 3.
jbg

2
Sebbene sia vero, python-memcachednon supporta nemmeno Python 3. pylibmc si sta attualmente preparando per una versione con supporto Python 3
anthonyryan1

10
Entrambi ora supportano Python3.
Aidin

1
Solo una nota sull'installazione: apt-get install libmemcached-deve poipip install pylibmc
Christian

Il problema per me era che pylibmc richiede strumenti di compilazione su Linux ed è difficile da installare su Windows. Uso un ambiente misto win / lin, quindi sono tornato a python-memcached per motivi di compatibilità. Il problema più grande era la politica che avevo contro l'installazione di strumenti di compilazione sui server di produzione Linux. La differenza di velocità tra python-memcached e pylibmc non dovrebbe quasi mai essere un problema.
Cris

7

Una buona regola pratica: usa il sistema di aiuto integrato in Python. Esempio sotto ...

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
    =============
...
------------------------------------------

Questo non è più valido. 2.7.3 non viene fornito con un modulo memcache installato di default, e anche il collegamento alla documentazione è interrotto.
iandouglas

1
@iandouglas: quello che scrivi è vero per la mia debian 6.0.7, ma dovevo solo apt-get install python-memcacheprendere il modulo.
jfg956
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.