riakcached 0.1.0
A Memcached like interface to Riak
License: MIT

Riakcached
==========

|Build Status| |Coverage Status| |PyPI version|

A Memcached like interface to the Riak HTTP Client. `Read The
Docs <http://riakcached.readthedocs.org/en/latest/>`__

Installing
----------

From PyPI
~~~~~~~~~

.. code:: bash

    pip install riakcached

From Git
~~~~~~~~

.. code:: bash

    git clone git://github.com/brettlangdon/riakcached.git
    cd ./riakcached
    pip install -r requirements.txt
    python setup.py install

Usage
-----

Basic Usage
~~~~~~~~~~~

.. code:: python

    from riakcached.clients import RiakClient

    client = RiakClient("my_bucket")

    client.set("hello", "world")
    print client.get("hello")
    # 'hello'

    client.delete("hello")
    print client.get("hello")
    # None

    values = {
        "hello": "world",
        "foo": "bar",
    }
    client.set_many(values)

    keys = ["hello", "foo", "test"]
    print client.get_many(keys)
    # {'foo': 'bar', 'hello': 'world'}

    client.close()

Connection Pool Settings
~~~~~~~~~~~~~~~~~~~~~~~~

.. code:: bash

    from riakcached.clients import RiakClient
    from riakcached.pools import Urllib3Pool

    pool = Urllib3Pool(base_url="http://my-host.com:8098/", timeout=1)
    client = RiakClient("my_bucket", pool=pool)

    client.get("foo")

Custom Connection Pool
~~~~~~~~~~~~~~~~~~~~~~

.. code:: bash

    from riakcached.clients import RiakClient
    from riakcache.pools import Pool

    class CustomPool(Pool):
        __slots__ = ["connection"]

        def connect(self):
            self.connection = make_a_connection()

        def close(self):
            if self.connection:
                close_connection(self.connection)

        def request(self, method, url, body=None, headers=None):
            results = make_request(self.connection, method, url, body, headers, timeout=self.timeout)
            return results.status, results.data, results.headers


    custom_pool = CustomPool(base_url="http://my-host.com:8098", timeout=1)
    client = RiakClient("my_bucket", pool=pool)

Threaded Client
~~~~~~~~~~~~~~~

The exists a ``riakcached.clients.ThreadedRiakClient`` which inherits
from ``riakcached.clients.RiakClient`` and which uses threading to try
to parallelize calls to ``get_many``, ``set_many`` and ``delete_many``.

Documentation
-------------

The documentation can be found in the ``/docs`` directory in this
repository and should be fairly complete for the codebase.

Building Documentation
~~~~~~~~~~~~~~~~~~~~~~

.. code:: bash

    git clone git://github.com/brettlangdon/riakcached.git
    cd riakcached
    pip install -r docs-requirements.txt
    cd ./docs
    make html

.. |Build Status| image:: https://travis-ci.org/brettlangdon/riakcached.png?branch=master
   :target: https://travis-ci.org/brettlangdon/riakcached
.. |Coverage Status| image:: https://coveralls.io/repos/brettlangdon/riakcached/badge.png?branch=master
   :target: https://coveralls.io/r/brettlangdon/riakcached?branch=master
.. |PyPI version| image:: https://badge.fury.io/py/riakcached.png
   :target: http://badge.fury.io/py/riakcached