Хороші приклади використання python-memcache (memcached) у Python? [зачинено]


91

Я пишу веб-програму, використовуючи Python та фреймворк web.py, і мені потрібно використовувати memcached.

Я шукав в Інтернеті, намагаючись знайти хорошу документацію щодо модуля python-memcached , але все, що я міг знайти, - це цей приклад на веб-сайті MySQL , і документація щодо його методів не є чудовою.

Відповіді:


145

Це досить просто. Ви пишете значення за допомогою ключів та часу закінчення терміну дії. Ви отримуєте значення за допомогою ключів. Ви можете закінчити термін дії ключів із системи.

Більшість клієнтів дотримуються однакових правил. Ви можете прочитати загальні інструкції та найкращі практики на розміщеній домашній сторінці .

Якщо ви дійсно хочете розібратися в цьому, я б подивився на джерело. Ось коментар заголовка:

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

Дякую, коментарі до вихідного коду дуже корисні.
Джонатан Пріор

Я не можу зрозуміти, що таке "mc". Ви можете пояснити?
bodacydo

9
mcє об'єктом клієнта Memcache, він представляє з'єднання memcache.
мошен

4
@Kevin 混合 理论 Усе це питання стосується pyca -memcached . Ось що забезпечує memcache.
Олі

1
@themiurgo наведений вище код - це коментар у заголовку фактичного коду, який пам'ятає python . Так було в 2009 році і так і сьогодні. Коментарі все ще кажуть "це повинно бути рядкове представлення цілого числа". Якщо ви вважаєте, що це неправильно, повідомте про них помилку, щоб вони оновили документацію.
Oli

43

Я б порадив вам використовувати pylibmcзамість цього.

Він може виступати як заміна заміни python-memcache, але набагато швидше (як написано на С). І ви можете знайти зручну документацію для нього тут .

І на запитання, оскільки pylibmc просто виконує роль заміни, що випадає, ви все ще можете звернутися до документації pylibmc для вашого програмування на python-memcache.


3
Зверніть увагу, що pylibmcце не працює на Python 3.
jbg

2
Хоча це правда, python-memcachedтакож не підтримує Python 3. Наразі pylibmc готується до випуску за підтримки Python 3
anthonyryan1

10
Обидва вони тепер підтримують Python3.
Айдін,

1
Лише примітка щодо встановлення: apt-get install libmemcached-devа потімpip install pylibmc
Крістіан

Проблемою для мене було те, що pylibmc вимагає інструментів збірки на Linux і їх важко встановити на Windows. Я використовую змішане середовище win / lin, тому я повернувся до python-memcached з міркувань сумісності. Найбільшою проблемою була моя політика щодо встановлення інструментів збірки на виробничих серверах Linux. Різниця в швидкості між python-memcached та pylibmc майже ніколи не повинна бути проблемою.
Кріс

7

Хороше правило: використовуйте вбудовану систему довідки в Python. Приклад нижче ...

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

Це більше не діє. 2.7.3 не постачається з модулем memcache, встановленим за замовчуванням, і посилання на документацію також порушено.
iandouglas

1
@iandouglas: те, що ви пишете, відповідає дійсності для мого debian 6.0.7, але мені потрібно було лише apt-get install python-memcacheотримати модуль.
jfg956
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.