Dobre przykłady użycia python-memcache (memcached) w Pythonie? [Zamknięte]

91

Piszę aplikację internetową w Pythonie i frameworku web.py i muszę używać memcached przez cały czas.

Szukałem w Internecie dobrej dokumentacji na temat modułu python-memcached , ale jedyne , co udało mi się znaleźć, to ten przykład na stronie MySQL , a dokumentacja dotycząca jego metod nie jest świetna.

Jonathan Prior
źródło

Odpowiedzi:

145

To całkiem proste. Wartości wpisujesz za pomocą kluczy i czasów wygaśnięcia. Otrzymujesz wartości za pomocą kluczy. Możesz wygasnąć klucze z systemu.

Większość klientów przestrzega tych samych zasad. Możesz przeczytać ogólne instrukcje i najlepsze praktyki na stronie głównej memcached .

Jeśli naprawdę chcesz się w to zagłębić, spojrzę na źródło. Oto komentarz w nagłówku:

"""
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
źródło
Dzięki, komentarze do kodu źródłowego są bardzo pomocne.
Jonathan Prior
Nie mogę zrozumieć, co to jest „mc”. Czy możesz wyjaśnić?
bodacydo
9
mcjest obiektem klienta Memcache, reprezentuje połączenie memcache.
moshen
4
@Kevin 混合 理论 To całe pytanie dotyczy pythona-memcached . To właśnie zapewnia memcache.
Oli
1
@themiurgo powyższy kod jest komentarzem w nagłówku rzeczywistego kodu python-memcached . Tak było w 2009 roku i tak jest do dziś. W komentarzach wciąż jest napisane „musi to być łańcuch reprezentujący liczbę całkowitą”. Jeśli uważasz, że to źle, zgłoś mu błąd, aby zaktualizował swoją dokumentację.
Oli
43

Radziłbym pylibmczamiast tego użyć .

Może działać jako zamiennik python-memcache, ale znacznie szybszy (tak jak jest napisany w C). I można znaleźć pod ręką dokumentację dla niego tutaj .

A jeśli chodzi o pytanie, ponieważ pylibmc działa tylko jako zamiennik typu drop-in, nadal możesz odwołać się do dokumentacji pylibmc dla programowania w języku python-memcache.

Felix Yan
źródło
3
Zauważ, że pylibmcnie działa w Pythonie 3.
jbg
2
Chociaż prawda, python-memcachednie obsługuje też Pythona 3. pylibmc przygotowuje się obecnie do wydania z obsługą Pythona 3
anthonyryan1
10
Oba obsługują teraz Python3.
Aidin
1
Tylko uwaga na temat instalacji: apt-get install libmemcached-deva potempip install pylibmc
Christian,
Problem polegał na tym, że pylibmc wymaga narzędzi do kompilacji w systemie Linux i jest trudny do zainstalowania w systemie Windows. Używam mieszanego środowiska win / lin, więc ze względów kompatybilności przełączyłem się z powrotem na python-memcached. Największym problemem była moja polityka przeciwko instalowaniu narzędzi do kompilacji na serwerach produkcyjnych Linuksa. Różnica szybkości między python-memcached i pylibmc prawie nigdy nie powinna stanowić problemu.
Cris
7

Praktyczna zasada: użyj wbudowanego systemu pomocy w Pythonie. Przykład poniżej ...

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
źródło
To już nie obowiązuje. 2.7.3 nie jest dostarczany z domyślnie zainstalowanym modułem memcache, a link do dokumentacji jest również uszkodzony.
iandouglas
1
@iandouglas: to, co napiszesz, jest prawdą dla mojego debiana 6.0.7, ale musiałem tylko apt-get install python-memcachepobrać moduł.
jfg956