Ví dụ tốt về python-memcache (memcached) đang được sử dụng trong Python? [đóng cửa]


91

Tôi đang viết một ứng dụng web bằng Python và khuôn khổ web.py và tôi cần sử dụng memcached trong suốt.

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

Câu trả lời:


145

Nó khá đơn giản. Bạn viết các giá trị bằng cách sử dụng các khóa 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 khóa. Bạn có thể hết hạn các khóa từ hệ thống.

Hầu hết các khách hàng đều tuân theo các quy tắc giống nhau. Bạn có thể đọc các hướng dẫn chung và các phương pháp hay nhất trên trang chủ memcached .

Nếu bạn thực sự muốn tìm hiểu sâu về nó, tôi sẽ xem xét nguồn. Đây là bình luận 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.
"""

Cảm ơn, các ý kiến ​​mã nguồn rất hữu ích.
Jonathan Trước

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

9
mclà đối tượng Memcache Client, nó đại diện cho kết nối memcached.
moshen

4
@Kevin 混合 理论 Toàn bộ câu hỏi này là về python-memcached . Đó là những gì cung cấp memcache.
Oli

1
@themiurgo mã ở trên là nhận xét trong tiêu đề của mã python-memcached thực tế . Đó là cách nó xảy ra vào năm 2009 và nó vẫn như ngày nay. Các bình luận xuyên suốt vẫn nói rằng "nó phải là biểu diễn chuỗi của một số nguyên". Nếu bạn cho rằng điều đó là sai, hãy gửi lỗi cho họ để họ cập nhật tài liệu của họ.
Oli

43

Tôi sẽ khuyên bạn sử dụng pylibmcthay thế.

Nó có thể hoạt động như một phần mềm thay thế python-memcache, nhưng nhanh hơn rất nhiều (vì nó được viết bằng C). Và bạn có thể tìm thấy tài liệu hữu ích cho nó ở đây .

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


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

2
Mặc dù đúng, python-memcachednhưng cũng không hỗ trợ Python 3. pylibmc hiện đang chuẩn bị cho một bản phát hành có hỗ trợ Python 3
anthonyryan1

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

1
Chỉ cần một lưu ý về cài đặt: apt-get install libmemcached-devvà sau đópip install pylibmc
Christian

Vấn đề đối với tôi là pylibmc yêu cầu công cụ xây dựng trên linux và rất khó cài đặt trên windows. Tôi sử dụng môi trường win / lin hỗn hợp vì vậy tôi đã chuyển trở lại python-memcached vì lý do tương thích. Vấn đề lớn nhất là tôi có chính sách chống lại việc cài đặt các công cụ xây dựng trên các máy chủ sản xuất linux. Sự khác biệt về tốc độ giữa python-memcached và pylibmc hầu như không bao giờ là một vấn đề.
Cris

7

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

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

Điều này không còn hợp lệ. 2.7.3 không được cung cấp với mô-đun memcache được cài đặt theo mặc định và liên kết đến tài liệu cũng bị hỏng.
iandouglas 26/12/12

1
@iandouglas: những gì bạn viết đúng với debian 6.0.7 của tôi, nhưng tôi chỉ phải apt-get install python-memcachelấy mô-đun.
jfg956
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.