Contoh bagus python-memcache (memcached) yang digunakan dengan Python? [Tutup]

91

Saya sedang menulis aplikasi web menggunakan Python dan kerangka web.py, dan saya perlu menggunakan memcache.

Saya telah mencari di internet mencoba menemukan beberapa dokumentasi yang bagus tentang modul python-memcached , tetapi yang bisa saya temukan hanyalah contoh ini di situs web MySQL , dan dokumentasi tentang metodenya tidak bagus.

Jonathan Prior
sumber

Jawaban:

145

Ini cukup sederhana. Anda menulis nilai menggunakan kunci dan waktu kedaluwarsa. Anda mendapatkan nilai menggunakan kunci. Anda dapat mengakhiri kunci dari sistem.

Kebanyakan klien mengikuti aturan yang sama. Anda dapat membaca instruksi umum dan praktik terbaik di beranda memcache .

Jika Anda benar-benar ingin menggali lebih dalam, saya akan melihat sumbernya. Berikut komentar headernya:

"""
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
sumber
Terima kasih, komentar kode sumber sangat membantu.
Jonathan Sebelum
Saya tidak mengerti apa itu 'mc'. Bisakah Anda menjelaskan?
bodacydo
9
mcadalah objek Klien Memcache, ini mewakili koneksi memcache.
moshen
4
@Kevin 混合 理论 Seluruh pertanyaan ini tentang python-memcached . Itulah yang memberikan memcache.
Oli
1
@themiurgo kode di atas adalah komentar di tajuk kode python-memcache yang sebenarnya . Begitulah di tahun 2009 dan masih seperti itu sampai sekarang. Komentar di seluruh masih mengatakan "itu harus menjadi representasi string dari sebuah integer". Jika menurut Anda itu salah, laporkan bug kepada mereka agar mereka memperbarui dokumentasinya.
Oli
43

Saya akan menyarankan Anda untuk menggunakan pylibmcsebagai gantinya.

Ini dapat bertindak sebagai pengganti drop-in dari python-memcache, tetapi jauh lebih cepat (seperti yang tertulis di C). Dan Anda dapat menemukan dokumentasi praktis untuk itu di sini .

Dan untuk pertanyaan itu, karena pylibmc hanya bertindak sebagai pengganti drop-in, Anda masih dapat merujuk ke dokumentasi pylibmc untuk pemrograman python-memcache Anda.

Felix Yan
sumber
3
Perhatikan bahwa pylibmctidak bekerja pada Python 3.
jbg
2
Meskipun benar, python-memcachedtidak mendukung Python 3 juga. pylibmc saat ini sedang mempersiapkan rilis dengan dukungan Python 3
anthonyryan1
10
Keduanya sekarang mendukung Python3.
Aidin
1
Hanya sebuah catatan tentang pemasangan: apt-get install libmemcached-devdan kemudianpip install pylibmc
Christian
Masalah bagi saya adalah bahwa pylibmc membutuhkan build-tools di linux dan sulit dipasang di windows. Saya menggunakan lingkungan win / lin campuran jadi saya beralih kembali ke python-memcache untuk alasan kompatibilitas. Masalah terbesar adalah kebijakan yang saya miliki terhadap penginstalan build-tools di server produksi linux. Perbedaan kecepatan antara python-memcached dan pylibmc seharusnya hampir tidak pernah menjadi masalah.
Cris
7

Aturan praktis yang baik: gunakan sistem bantuan bawaan dengan Python. Contoh di bawah ...

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
sumber
Ini sudah tidak valid. 2.7.3 tidak dikirimkan dengan modul memcache yang diinstal secara default, dan tautan ke dokumentasi juga rusak.
iandouglas
1
@iandouglas: apa yang Anda tulis benar untuk debian 6.0.7 saya, tetapi saya hanya apt-get install python-memcacheperlu mendapatkan modulnya.
jfg956