Хорошие примеры использования python-memcache (memcached) в Python? [закрыто]

91

Я пишу веб-приложение, используя Python и фреймворк web.py, и мне нужно везде использовать memcached.

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

Джонатан Прайор
источник

Ответы:

145

Это довольно просто. Вы пишете значения, используя ключи и время истечения срока действия. Вы получаете значения с помощью ключей. Вы можете истечь ключи из системы.

Большинство клиентов следуют одним и тем же правилам. Вы можете прочитать общие инструкции и передовой опыт на домашней странице memcached .

Если вы действительно хотите вникнуть в это, я бы посмотрел на источник. Вот комментарий в заголовке:

"""
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.
"""
Оли
источник
Спасибо, комментарии к исходному коду очень полезны.
Джонатан Прайор,
Я не могу понять, что такое «МС». Не могли бы вы объяснить?
bodacydo
9
mcявляется объектом клиента Memcache, он представляет соединение memcached.
Moshen
4
@Kevin 混合 理论 Весь этот вопрос касается python-memcached . Вот что дает memcache.
Oli
1
@themiurgo приведенный выше код является комментарием в заголовке фактического кода python-memcached . Так было в 2009 году и так обстоит до сих пор. В комментариях по-прежнему говорится, что «это должно быть строковое представление целого числа». Если вы думаете, что это неправильно, сообщите им об ошибке, чтобы они обновили свою документацию.
Оли
43

Я бы посоветовал вам использовать pylibmc вместо него.

Он может действовать как прямая замена python-memcache, но намного быстрее (как он написан на C). И вы можете найти к нему удобную документацию здесь .

И что касается вопроса, поскольку pylibmc просто действует как замена, вы все равно можете обратиться к документации pylibmc для своего программирования python-memcache.

Феликс Ян
источник
3
Обратите внимание, что pylibmcне работает на Python 3.
jbg
2
Хотя это правда, python-memcachedон также не поддерживает Python 3. pylibmc в настоящее время готовится к выпуску с поддержкой Python 3
anthonyryan1 05
10
Оба они теперь поддерживают Python3.
Aidin
1
Просто примечание по установке: apt-get install libmemcached-devа затемpip install pylibmc
Кристиан
Для меня проблема заключалась в том, что для pylibmc требуются инструменты сборки в Linux, и его сложно установить в Windows. Я использую смешанную среду win / lin, поэтому я вернулся к python-memcached по соображениям совместимости. Самая большая проблема заключалась в моей политике против установки инструментов сборки на производственные серверы Linux. Разница в скорости между python-memcached и pylibmc почти никогда не должна быть проблемой.
Cris
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