Python'da kullanılan python-memcache (memcached) için iyi örnekler? [kapalı]


91

Python ve web.py çerçevesini kullanarak bir web uygulaması yazıyorum ve baştan sona memcached'i kullanmam gerekiyor.

Python-memcached modülüyle ilgili bazı iyi belgeler bulmaya çalışarak internette arama yaptım , ancak bulabildiğim tek şey MySQL web sitesindeki bu örnekti ve yöntemleriyle ilgili belgeler harika değil.

Yanıtlar:


145

Oldukça basit. Değerleri anahtarlar ve son kullanma süreleri kullanarak yazarsınız. Anahtarları kullanarak değerler alırsınız. Anahtarları sistemden sona erdirebilirsiniz.

Çoğu müşteri aynı kuralları takip eder. Memcached ana sayfasında genel talimatları ve en iyi uygulamaları okuyabilirsiniz .

Gerçekten araştırmak istiyorsanız, kaynağa bakarım. İşte başlık yorumu:

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

Teşekkürler, kaynak kodu yorumları çok faydalıdır.
Jonathan

'Mc'nin ne olduğunu anlayamıyorum. Açıklayabilir misin?
bodacydo

9
mcMemcache İstemci nesnesidir, memcached bağlantısını temsil eder.
moshen

4
@Kevin 混合 理论 Bu soru python-memcached ile ilgili . Bu sağlar memcache.
Oli

1
@themiurgo Yukarıdaki kod , gerçek python-memcached kodunun başlığındaki bir yorumdur . 2009'da böyleydi ve bugün de öyle. Yorumlarda hala "bir tamsayının dize temsili olması gerekir" der. Bunun yanlış olduğunu düşünüyorsanız, belgelerini güncellemelerini sağlamak için onlara bir hata bildirin.
Oli

43

Onun pylibmcyerine kullanmanızı tavsiye ederim .

Python-memcache yerine bir drop-in görevi görebilir, ancak çok daha hızlıdır (C ile yazıldığı gibi). Ve bunun için kullanışlı belgeleri burada bulabilirsiniz .

Ve soruya gelecek olursak, pylibmc sadece bir drop-in ikamesi görevi gördüğünden, python-memcache programlamanız için pylibmc belgelerine başvurabilirsiniz.


3
Bunun pylibmcPython 3 üzerinde çalışmadığını unutmayın .
jbg

2
Doğru olsa da, python-memcachedPython 3'ü de desteklemez. pylibmc şu anda Python 3 desteği ile bir sürüm için hazırlanıyor
anthonyryan1

10
İkisi de artık Python3'ü destekliyor.
Aidin

1
Kurulumla ilgili bir not: apt-get install libmemcached-devve sonrapip install pylibmc
Christian

Benim için sorun, pylibmc'nin linux üzerinde derleme araçları gerektirmesi ve pencerelere yüklemesinin zor olmasıydı. Karışık win / lin ortamı kullanıyorum, bu yüzden uyumluluk nedenlerinden dolayı python-memcached'e geri döndüm. En büyük sorun, linux üretim sunucularına derleme araçları yüklemeye karşı uyguladığım politikaydı. Python-memcached ve pylibmc arasındaki hız farkı neredeyse hiçbir zaman bir sorun olmamalıdır.
Cris

7

İyi bir pratik kural: Python'daki yerleşik yardım sistemini kullanın. Aşağıdaki örnek ...

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

Bu artık geçerli değil. 2.7.3 varsayılan olarak yüklenmiş bir memcache modülü ile birlikte gönderilmez ve dokümantasyon bağlantısı da kesilir.
iandouglas

1
@iandouglas: Yazdıklarınız debian 6.0.7 için doğru, ancak sadece apt-get install python-memcachemodülü almam gerekiyordu .
jfg956
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.