2009-05-15 20 views
87

Tôi đang viết một ứng dụng web bằng cách sử dụng Python và khung làm việc web.py, và tôi cần sử dụng memcached trong suốt.Ví dụ về python-memcache (memcached) được sử dụng trong Python?

Tôi đã tìm kiếm trên internet cố gắng tìm một số tài liệu tốt trên mô-đun python-memcached, nhưng tất cả những gì tôi có thể tìm thấy là this example on the MySQL website và tài liệu về phương pháp của nó không tuyệt vời.

Trả lời

138

Nó khá đơn giản. Bạn viết các giá trị bằng cách sử dụng các phím và thời gian hết hạn. Bạn nhận được các giá trị bằng cách sử dụng các phím. Bạn có thể hết hạn khóa từ hệ thống.

Hầu hết khách hàng đều tuân thủ cùng một quy tắc. Bạn có thể đọc hướng dẫn chung và thực tiễn tốt nhất trên the memcached homepage.

Nếu bạn thực sự muốn thâm nhập vào nó, tôi sẽ xem xét nguồn. Dưới đây là những nhận xét tiêu đề:

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

Cảm ơn, nhận xét mã nguồn rất hữu ích. –

+0

Tôi không thể hiểu 'mc' là gì. Bạn có thể giải thích dùm không? – bodacydo

+9

'mc' là đối tượng Memcache Client, nó đại diện cho kết nối memcached. – moshen

40

tôi sẽ khuyên bạn nên sử dụng pylibmc để thay thế.

Nó có thể hoạt động như một sự thay thế drop-in của python-memcache, nhưng nhanh hơn rất nhiều (như nó được viết bằng C). Và bạn có thể tìm tài liệu hữu ích cho nó here.

Và đối với câu hỏi, vì pylibmc chỉ hoạt động như một bản thay thế, bạn vẫn có thể tham khảo tài liệu về pylibmc để lập trình python-memcache của bạn.

+2

Lưu ý rằng 'pylibmc' không hoạt động trên Python 3. – jbg

+2

Trong khi đúng,' python-memcached' không hỗ trợ Python 3. pylibmc hiện đang chuẩn bị cho bản phát hành có hỗ trợ Python 3 – anthonyryan1

+8

Cả hai đều hỗ trợ Python3. – Aidin

7

Nguyên tắc chung: sử dụng hệ thống trợ giúp được cài sẵn trong Python. Ví dụ bên dưới ...

[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

Điều này không còn giá trị. 2.7.3 không gửi kèm theo mô-đun memcache được cài đặt theo mặc định và liên kết tới tài liệu cũng bị hỏng. – iandouglas

+1

@iandouglas: những gì bạn viết là đúng cho debian 6.0.7 của tôi, nhưng tôi chỉ có 'apt-get install python-memcache' để lấy module. – jfg956

Các vấn đề liên quan