Pythonで使用されているpython-memcache(memcached)の良い例は?[閉まっている]


91

私はPythonとweb.pyフレームワークを使用してWebアプリを作成していて、全体でmemcachedを使用する必要があります。

私はpython-memcachedモジュールに関するいくつかの優れたドキュメントを見つけるためにインターネットを検索してきましたが、MySQLのWebサイトにあるこの例しか見つかりませんでした。また、そのメソッドに関するドキュメントはすばらしいものではありません。

回答:


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
mcMemcacheクライアントオブジェクトであり、memcached接続を表します。
モシェ

4
@Kevin混合理论この質問全体はpython-memcachedに関するものです。それが提供するものmemcacheです。
Oli

1
@themiurgo上記のコードは、実際のpython-memcachedコードのヘッダーにあるコメントです。それが2009年の様子であり、それが今日でもそうです。コメントはまだ「整数の文字列表現でなければならない」と言っています。それが間違っていると思われる場合は、バグを報告して、ドキュメントを更新してもらいます。
2013年

43

pylibmc代わりに使用することをお勧めします。

python-memcacheのドロップイン置換として機能できますが、はるかに高速です(Cで記述されているため)。そして、あなたはそれのための便利なドキュメントをここで見つけることができます。

そして、質問に対して、pylibmcはドロップイン置換として機能するだけなので、python-memcacheプログラミングについてはpylibmcのドキュメントを参照できます。


3
pylibmcPythonの3の作業をしません
JBG

2
trueですが、python-memcachedPython 3もサポートしていません。pylibmcは現在のPython 3をサポートするリリースに向けて準備される
anthonyryan1

10
どちらもPython3をサポートしています。
アイディン

1
:ただのインストールに関する注意事項apt-get install libmemcached-dev当時とpip install pylibmc
キリスト教の

私にとっての問題は、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には、デフォルトでインストールされたmemcacheモジュールが同梱されておらず、ドキュメントへのリンクも壊れています。
iandouglas

1
@iandouglas:あなたが書いたことは私のdebian 6.0.7にも当てはまりapt-get install python-memcacheますが、モジュールを入手するだけで済みました。
jfg956 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.