2009-05-15 2 views
87

Я пишу веб-приложение с использованием Python и web.py framework, и мне нужно использовать memcached.Хорошие примеры использования python-memcache (memcached) в Python?

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

ответ

138

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

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

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

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

Спасибо, комментарии исходного кода очень полезны. –

+0

Я не могу понять, что такое «mc». Не могли бы вы объяснить? – bodacydo

+9

'mc' - это объект Client Memcache, он представляет собой memcached-соединение. – moshen

40

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

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

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

+2

Обратите внимание, что 'pylibmc' не работает на Python 3. – jbg

+2

Хотя true,' python-memcached' не поддерживает Python 3. pylibmc в настоящее время готовится к выпуску с поддержкой Python 3 – anthonyryan1

+8

Оба они теперь поддерживают Python3. – Aidin

7

Хорошее эмпирическое правило: используйте встроенную справочную систему в Python. Пример ниже ...

[email protected]:~$ 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 
    ============= 
... 
------------------------------------------ 
+0

Это уже недействительно. 2.7.3 не поставляется с модулем memcache, установленным по умолчанию, и ссылка на документацию также не работает. – iandouglas

+1

@iandouglas: то, что вы пишете, верно для моего debian 6.0.7, но мне нужно было только «apt-get install python-memcache» получить модуль. – jfg956