Gute Beispiele für die Verwendung von Python-Memcache (Memcached) in Python? [geschlossen]


91

Ich schreibe eine Web-App mit Python und dem web.py-Framework und muss durchgehend memcached verwenden.

Ich habe im Internet nach einer guten Dokumentation für das Python-Memcached- Modul gesucht , aber alles, was ich finden konnte, war dieses Beispiel auf der MySQL-Website , und die Dokumentation zu seinen Methoden ist nicht großartig.

Antworten:


145

Es ist ziemlich einfach. Sie schreiben Werte mit Schlüsseln und Ablaufzeiten. Sie erhalten Werte mit Schlüsseln. Sie können Schlüssel vom System ablaufen lassen.

Die meisten Kunden folgen denselben Regeln. Sie können die allgemeinen Anweisungen und Best Practices auf der zwischengespeicherten Homepage lesen .

Wenn Sie sich wirklich damit beschäftigen möchten, würde ich mir die Quelle ansehen. Hier ist der Header-Kommentar:

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

Vielen Dank, die Quellcode-Kommentare sind sehr hilfreich.
Jonathan Prior

Ich kann nicht verstehen, was 'mc' ist. Kannst du bitte Erklären?
Bodacydo

9
mcist das Memcache-Client-Objekt und repräsentiert die zwischengespeicherte Verbindung.
Moshen

4
@ Kevin 混合 理论 Diese ganze Frage handelt von Python-Memcached . Das ist es, was bietet memcache.
Oli

1
@themiurgo Der obige Code ist ein Kommentar in der Kopfzeile des eigentlichen Python-Memcached-Codes . So war es 2009 und so ist es heute noch. In allen Kommentaren heißt es immer noch "Es muss die Zeichenfolgendarstellung einer Ganzzahl sein". Wenn Sie der Meinung sind, dass dies falsch ist, melden Sie einen Fehler bei ihnen, damit sie ihre Dokumentation aktualisieren.
Oli

43

Ich würde Ihnen raten, pylibmcstattdessen zu verwenden .

Es kann als Ersatz für Python-Memcache fungieren, ist jedoch viel schneller (wie in C geschrieben). Eine praktische Dokumentation dazu finden Sie hier .

Und auf die Frage, da pylibmc nur als Drop-In-Ersatz fungiert, können Sie für Ihre Python-Memcache-Programmierung immer noch auf Dokumentationen von pylibmc verweisen.


3
Beachten Sie, dass pylibmcdies unter Python 3 nicht funktioniert.
jbg

2
Obwohl wahr, python-memcachedunterstützt Python 3 auch nicht. pylibmc bereitet sich derzeit auf eine Veröffentlichung mit Python 3-Unterstützung vor
anthonyryan1

10
Beide unterstützen jetzt Python3.
Aidin

1
Nur ein Hinweis zur Installation: apt-get install libmemcached-devund dannpip install pylibmc
Christian

Das Problem für mich war, dass pylibmc Build-Tools unter Linux benötigt und unter Windows schwer zu installieren ist. Ich verwende eine gemischte Win / Lin-Umgebung, daher habe ich aus Kompatibilitätsgründen wieder auf Python-Memcached umgestellt. Das größte Problem war die Richtlinie, die ich gegen die Installation von Build-Tools auf Linux-Produktionsservern habe. Geschwindigkeitsunterschiede zwischen Python-Memcached und Pylibmc sollten fast nie ein Problem sein.
Cris

7

Eine gute Faustregel: Verwenden Sie das in Python integrierte Hilfesystem. Beispiel unten ...

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

Dies ist nicht mehr gültig. 2.7.3 wird nicht mit einem standardmäßig installierten Memcache-Modul ausgeliefert, und der Link zur Dokumentation ist ebenfalls fehlerhaft.
Iandouglas

1
@iandouglas: Was du schreibst, gilt für mein Debian 6.0.7, aber ich musste nur apt-get install python-memcachedas Modul bekommen.
jfg956
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.