This repository has been archived on 2018-06-04 . You can view files and clone it, but cannot push or open issues or pull requests.
`pylibmc` is a quick and small Python client for memcached__ written in C. __ http://memcached.org/ It builds on the famous `libmemcached`__ C client from TangetOrg__, notable for its speed and flexibility. __ http://tangent.org/552/libmemcached.html __ http://tangent.org/ `libmemcached` must be installed separately, and be available to the compiler and linker. Basic usage is that of `python-memcached`__, like so:: >>> import pylibmc >>> mc = pylibmc.Client(["127.0.0.1:11211"]) >>> mc.set("foo", "Hello world!") True >>> mc.get("foo") 'Hello world!' __ http://www.tummy.com/Community/software/python-memcached/ There's also support for some other features not present in other Python libraries, like the binary protocol:: >>> mc = pylibmc.Client(["127.0.0.1"], binary=True) Behaviors ========= `libmemcached` has ways of telling it how to behave. You'll have to refer to its documentation on what the different behaviors do. To change behaviors, quite simply:: >>> mc.behaviors["hash"] = "fnv1a_32" For a list of the defined behavior key names, see what the keys of a client is. For example:: >>> mc.behaviors.keys() # doctest: +NORMALIZE_WHITESPACE ['hash', 'connect timeout', 'cache lookups', 'buffer requests', 'verify key', 'support cas', 'poll timeout', 'no block', 'tcp nodelay', 'distribution', 'sort hosts'] The ``hash`` and ``distribution`` keys are mapped by the Python module to constant integer values used by `libmemcached`. See ``pylibmc.hashers`` and ``pylibmc.distributions``. Pooling ======= In multithreaded environments, accessing the same memcached client object is both unsafe and counter-productive in terms of performance. `libmemcached`'s take on this is to introduce pooling on C level, which is correspondingly mapped to pooling on Python level in `pylibmc`:: >>> mc = pylibmc.Client(["127.0.0.1"]) >>> pool = pylibmc.ThreadMappedPool(mc) >>> # (in a thread...) >>> with pool.reserve() as mc: ... mc.set("hello", "world") For more information on pooling, see `my two`__ `long posts`__ about it. __ http://lericson.blogg.se/code/2009/september/draft-sept-20-2009.html __ http://lericson.blogg.se/code/2009/september/pooling-with-pylibmc-pt-2.html Comparison to other libraries ============================= Why use `pylibmc`? Because it's fast. `See this (a bit old) speed comparison`__, or `amix.dk's comparison`__. __ http://lericson.blogg.se/code/2008/november/pylibmc-051.html __ http://amix.dk/blog/viewEntry/19471 IRC === ``#sendapatch`` on ``chat.freenode.net``. Change Log ========== New in version 0.9 ------------------ - Added a ``get_stats`` method, which behaves exactly like `python-memcached`'s equivalent. - Gives the empty string for empty memcached values like `python-memcached` does. - Added exceptions for most `libmemcached` return codes. - Fixed an issue with ``Client.behaviors.update``. New in version 0.8 ------------------ - Pooling helpers are now available. See ``pooling.rst`` in the distribution. - The binary protocol is now properly exposed, simply pass ``binary=True`` to the constructor and there you go. - Call signatures now match `libmemcached` 0.32, but should work with older versions. Remember to run the tests! New in version 0.7 ------------------ - Restructured some of the code, which should yield better performance (if not for that, it reads better.) - Fixed some memory leaks. - Integrated changes from `amix.dk`, which should make pylibmc work under Snow Leopard. - Add support for the boolean datatype. - Improved test-runner -- now tests ``build/lib.*/_pylibmc.so`` if available, and reports some version information. - Support for x86_64 should now work completely. - Builds with Python 2.4, tests run fine, but not officially supported. - Fixed critical bugs in behavior manipulation. New in version 0.6 ------------------ - Added compatibility with `libmemcached` 0.26, WRT error return codes. - Added `flush_all` and `disconnect_all` methods. - Now using the latest pickling protocol. New in version 0.5 ------------------ - Fixed lots of memory leaks, and added support for `libmemcached` 0.23. - Also made the code tighter in terms of compiler pedantics. New in version 0.4 ------------------ - Renamed the C module to `_pylibmc`, and added lots of `libmemcached` constants to it, as well as implemented behaviors.
Description
Languages
C
72.4%
Python
24.5%
reStructuredText
3.1%