2009-07-31 20:19:25 +00:00
|
|
|
`pylibmc` is a Python wrapper around the accompanying C Python extension
|
|
|
|
`_pylibmc`, which is a wrapper around `libmemcached` from TangentOrg.
|
|
|
|
|
|
|
|
You have to install `libmemcached` separately, and have your compiler and
|
|
|
|
linker find the include files and libraries.
|
|
|
|
|
|
|
|
With `libmemcached` installed and this package set up, the following basic
|
|
|
|
usage example should work::
|
|
|
|
|
|
|
|
>>> import pylibmc
|
|
|
|
>>> mc = pylibmc.Client(["127.0.0.1:11211"])
|
|
|
|
>>> mc.set("foo", "Hello world!")
|
|
|
|
True
|
|
|
|
>>> mc.get("foo")
|
|
|
|
'Hello world!'
|
|
|
|
|
|
|
|
The API is pretty much `python-memcached`. Some parts of `libmemcached` aren't
|
|
|
|
exposed yet. I think.
|
|
|
|
|
|
|
|
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"
|
|
|
|
|
2009-07-31 21:01:28 +00:00
|
|
|
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``.
|
|
|
|
|
|
|
|
|
2009-07-31 20:19:25 +00:00
|
|
|
Comparison to other libraries
|
|
|
|
=============================
|
|
|
|
|
|
|
|
Why use `pylibmc`? Because it's fast.
|
|
|
|
|
2009-07-31 21:01:28 +00:00
|
|
|
`See this (a bit old) speed comparison <http://lericson.blogg.se/code/2008/november/pylibmc-051.html>`_.
|
2009-07-31 20:19:25 +00:00
|
|
|
|
2009-08-16 15:10:17 +00:00
|
|
|
|
|
|
|
IRC
|
|
|
|
===
|
|
|
|
|
|
|
|
``#sendapatch`` on ``chat.freenode.net``.
|
|
|
|
|
2009-09-06 23:59:54 +00:00
|
|
|
Compiling on Snow Leopard
|
|
|
|
=========================
|
|
|
|
|
|
|
|
Since, for some reason, compiling Python extensions under Mac OS X 10.6 won't
|
|
|
|
use the proper ``-arch`` flag to ``gcc``, here's how you'd do it::
|
|
|
|
|
|
|
|
$ CFLAGS="-arch x86_64" LDFLAGS="-arch x86_64" python setup.py build
|
|
|
|
|
2009-07-31 20:19:25 +00:00
|
|
|
Change Log
|
|
|
|
==========
|
|
|
|
|
2009-09-07 00:29:35 +00:00
|
|
|
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.
|
2009-09-07 00:59:25 +00:00
|
|
|
- Add support for the boolean datatype.
|
2009-09-07 18:59:17 +00:00
|
|
|
- Improved test-runner -- now tests ``build/lib.*/_pylibmc.so`` if available,
|
|
|
|
and reports some version information.
|
2009-09-07 00:29:35 +00:00
|
|
|
|
2009-07-31 20:19:25 +00:00
|
|
|
New in version 0.6
|
|
|
|
------------------
|
|
|
|
|
2009-07-31 21:01:28 +00:00
|
|
|
- Added compatibility with `libmemcached` 0.26, WRT error return codes.
|
|
|
|
- Added `flush_all` and `disconnect_all` methods.
|
|
|
|
- Now using the latest pickling protocol.
|
2009-07-31 20:19:25 +00:00
|
|
|
|
|
|
|
New in version 0.5
|
|
|
|
------------------
|
|
|
|
|
2009-07-31 21:01:28 +00:00
|
|
|
- Fixed lots of memory leaks, and added support for `libmemcached` 0.23.
|
2009-07-31 21:14:59 +00:00
|
|
|
- Also made the code tighter in terms of compiler pedantics.
|
2009-07-31 20:19:25 +00:00
|
|
|
|
|
|
|
New in version 0.4
|
|
|
|
------------------
|
|
|
|
|
2009-07-31 21:01:28 +00:00
|
|
|
- Renamed the C module to `_pylibmc`, and added lots of `libmemcached` constants
|
|
|
|
to it, as well as implemented behaviors.
|