Python中使用python-memcache(memcached)的好例子?[关闭]


91

我正在使用Python和web.py框架编写Web应用程序,并且需要在整个过程中使用memcached。

我一直在互联网上搜索,试图在python-memcached模块上找到一些好的文档,但是我所能找到的只是MySQL网站上的该示例,而其方法的文档也不是很好。

Answers:


145

这很简单。您可以使用键和有效时间来写值。您可以使用键获取值。您可以使系统中的密钥失效。

大多数客户遵循相同的规则。您可以在memcached主页上阅读通用说明和最佳做法。

如果您真的想深入研究它,请查看源代码。这是标题注释:

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

谢谢,源代码注释非常有帮助。
乔纳森·

我不明白什么是“ mc”。你能解释一下吗?
bodacydo

9
mc是Memcache Client对象,它表示memcached连接。
moshen 2010年

4
@Kevin混合理论整个问题都与python-memcached有关。这就是所提供的memcache
奥利2012年

1
@themiurgo上面的代码是实际python-memcached代码标题的注释。2009年就是这样,今天仍然如此。贯穿全文的评论仍然说“它必须是整数的字符串表示形式”。如果您认为这是错误的,请向他们提交错误,以使他们更新其文档。
奥利

43

我建议您改为使用pylibmc

它可以代替python-memcache,但是速度要快得多(因为它是用C编写的)。您可以在此处找到方便的文档。

问题是,由于pylibmc只是一个直接的替代品,因此您仍然可以参考pylibmc的文档来进行python-memcache编程。


3
请注意,pylibmc这在Python 3上
不起作用。– jbg

2
虽然为true,python-memcached但也不支持Python 3。pylibmc当前正在准备支持Python 3的版本
anthonyryan1 2014年

10
他们俩现在都支持Python3。

1
只是有关安装的注意事项:apt-get install libmemcached-dev然后pip install pylibmc
Christian

我的问题是pylibmc在Linux上需要构建工具,并且很难在Windows上安装。我使用混合Win / Lin环境,因此出于兼容性原因,我切换回了python-memcached。最大的问题是我反对在Linux生产服务器上安装构建工具的策略。python-memcached和pylibmc之间的速度差异几乎永远不会成为问题。
Cris

7

一个好的经验法则:在Python中使用内置的帮助系统。下面的例子...

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

这不再有效。默认情况下,2.7.3不附带内存缓存模块,并且指向文档的链接也已断开。
iandouglas 2012年

1
@iandouglas:您编写的内容对我的debian 6.0.7来说是正确的,但是我只apt-get install python-memcache需要获取模块即可。
jfg956
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.