Metadata-Version: 2.0
Name: aioredis
Version: 1.0.0b2
Summary: asyncio (PEP 3156) Redis support
Home-page: https://github.com/aio-libs/aioredis
Author: Alexey Popravka
Author-email: alexey.popravka@horsedevel.com
License: MIT
Platform: POSIX
Classifier: License :: OSI Approved :: MIT License
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Operating System :: POSIX
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Libraries
Classifier: Framework :: AsyncIO
Requires-Dist: async-timeout
Requires-Dist: hiredis

aioredis
========

asyncio (PEP 3156) Redis client library.

.. image:: https://travis-ci.org/aio-libs/aioredis.svg?branch=master
   :target: https://travis-ci.org/aio-libs/aioredis


.. image:: https://codecov.io/gh/aio-libs/aioredis/branch/master/graph/badge.svg
   :target: https://codecov.io/gh/aio-libs/aioredis

.. image:: https://ci.appveyor.com/api/projects/status/wngyx6s98o6hsxmt/branch/master?svg=true
   :target: https://ci.appveyor.com/project/popravich/aioredis

Features
--------

================================  ==============================
hiredis_ parser                     Yes
Pure-python parser                  Yes
Low-level & High-level APIs         Yes
Connections Pool                    Yes
Pipelining support                  Yes
Pub/Sub support                     Yes
SSL/TLS support                     Yes
Sentinel support                    Yes [1]_
Redis Cluster support               WIP
Trollius (python 2.7)               No
Tested CPython versions             `3.3, 3.4, 3.5, 3.6 <travis_>`_
Tested PyPy3 versions               `5.7.1 <travis_>`_
Tested for Redis server             `2.6, 2.8, 3.0, 3.2 <travis_>`_
Support for dev Redis server        through low-level API
================================  ==============================


.. [1] Sentinel support is available in master branch.
   This feature is not yet stable and may have some issues.

Documentation
-------------

http://aioredis.readthedocs.io/

Usage examples
--------------

Simple low-level interface:

.. code:: python

    import asyncio
    import aioredis

    loop = asyncio.get_event_loop()

    async def go():
        conn = await aioredis.create_connection(
            ('localhost', 6379), loop=loop)
        await conn.execute('set', 'my-key', 'value')
        val = await conn.execute('get', 'my-key')
        print(val)
        conn.close()
        await conn.wait_closed()
    loop.run_until_complete(go())
    # will print 'value'

Simple high-level interface:

.. code:: python

    import asyncio
    import aioredis

    loop = asyncio.get_event_loop()

    async def go():
        redis = await aioredis.create_redis(
            ('localhost', 6379), loop=loop)
        await redis.set('my-key', 'value')
        val = await redis.get('my-key')
        print(val)
        redis.close()
        await redis.wait_closed()
    loop.run_until_complete(go())
    # will print 'value'

Connections pool:

.. code:: python

    import asyncio
    import aioredis

    loop = asyncio.get_event_loop()

    async def go():
        pool = await aioredis.create_pool(
            ('localhost', 6379),
            minsize=5, maxsize=10,
            loop=loop)
        await pool.execute('set', 'my-key', 'value')
        print(await pool.execute('get', 'my-key'))
        # graceful shutdown
        pool.close()
        await pool.wait_closed()

    loop.run_until_complete(go())


Requirements
------------

* Python_ 3.3+
* asyncio_ or Python_ 3.4+
* hiredis_

.. note::

    hiredis is preferred requirement.
    Pure-python protocol parser is implemented as well and can be used
    through ``parser`` parameter.

Discussion list
---------------

*aio-libs* google group: https://groups.google.com/forum/#!forum/aio-libs

License
-------

The aioredis is offered under MIT license.

.. _Python: https://www.python.org
.. _asyncio: https://pypi.python.org/pypi/asyncio
.. _hiredis: https://pypi.python.org/pypi/hiredis
.. _travis: https://travis-ci.org/aio-libs/aioredis

Changes
-------

1.0.0 (2017-xx-xx)
^^^^^^^^^^^^^^^^^^

**NEW**:

* Connections pool has been refactored; now ``create_redis``
  function will yield ``Redis`` instance instead of ``RedisPool``
  (see `#129 <https://github.com/aio-libs/aioredis/pull/129>`_);

* Dropped ``create_reconnecting_redis``, ``create_redis_pool`` should be
  used instead;

* Implement Sentinel support
  (see `#181 <https://github.com/aio-libs/aioredis/pull/181>`_);

* Implement pure-python parser
  (see `#212 <https://github.com/aio-libs/aioredis/pull/212>`_);

* Add ``migrate_keys`` command
  (see `#187 <https://github.com/aio-libs/aioredis/pull/187>`_);

* Add ``zrevrangebylex`` command
  (see `#201 <https://github.com/aio-libs/aioredis/pull/201>`_);

* Add ``command``, ``command_count``, ``command_getkeys`` and
  ``command_info`` commands
  (see `#229 <https://github.com/aio-libs/aioredis/pull/229>`_);

**FIX**:

* Fix critical bug in patched asyncio.Lock
  (see `#256 <https://github.com/aio-libs/aioredis/pull/256>`_);

* Fix Multi/Exec transaction canceled error
  (see `#225 <https://github.com/aio-libs/aioredis/pull/225>`_);

* Add missing arguments to ``create_redis`` and ``create_redis_pool``;

* Fix deprecation warning
  (see `#191 <https://github.com/aio-libs/aioredis/pull/191>`_);

* Make correct ``__aiter__()``
  (see `#192 <https://github.com/aio-libs/aioredis/pull/192>`_);

* Backward compatibility fix for ``with (yield from pool) as conn:``
  (see `#205 <https://github.com/aio-libs/aioredis/pull/205>`_);

* Fixed pubsub receiver stop()
  (see `#211 <https://github.com/aio-libs/aioredis/pull/211>`_);

**MISC**:

* Multiple test fixes;

* Add PyPy3 to build matrix;

* Update dependencies versions;


0.3.2 (2017-06-21)
^^^^^^^^^^^^^^^^^^

**NEW**:

* Added ``zrevrangebylex`` command
  (see `#201 <https://github.com/aio-libs/aioredis/pull/201>`_),
  cherry-picked from master;

* Add connection timeout
  (see `#221 <https://github.com/aio-libs/aioredis/pull/221>`_),
  cherry-picked from master;

**FIX**:

* Fixed pool close warning
  (see `#239 <https://github.com/aio-libs/aioredis/pull/239>`_
  and `#236 <https://github.com/aio-libs/aioredis/issues/236>`_),
  cherry-picked from master;

* Fixed asyncio Lock deadlock issue
  (see `#231 <https://github.com/aio-libs/aioredis/issues/231>`_
  and `#241 <https://github.com/aio-libs/aioredis/pull/241>`_);


0.3.1 (2017-05-09)
^^^^^^^^^^^^^^^^^^

**FIX**:

* Fix pubsub Receiver missing iter() method
  (see `#203 <https://github.com/aio-libs/aioredis/issues/203>`_);


0.3.0 (2017-01-11)
^^^^^^^^^^^^^^^^^^

**NEW**:

* Pub/Sub connection commands accept ``Channel`` instances
  (see `#168 <https://github.com/aio-libs/aioredis/pull/168>`_);

* Implement new Pub/Sub MPSC (multi-producers, single-consumer) Queue --
  ``aioredis.pubsub.Receiver``
  (see `#176 <https://github.com/aio-libs/aioredis/pull/176>`_);

* Add ``aioredis.abc`` module providing abstract base classes
  defining interface for basic lib components;
  (see `#176 <https://github.com/aio-libs/aioredis/pull/176>`_);

* Implement Geo commands support
  (see `#177 <https://github.com/aio-libs/aioredis/pull/177>`_
  and `#179 <https://github.com/aio-libs/aioredis/pull/179>`_);

**FIX**:

* Minor tests fixes;

**MISC**:

* Update examples and docs to use ``async``/``await`` syntax
  also keeping ``yield from`` examples for history
  (see `#173 <https://github.com/aio-libs/aioredis/pull/173>`_);

* Reflow Travis CI configuration; add Python 3.6 section
  (see `#170 <https://github.com/aio-libs/aioredis/pull/170>`_);

* Add AppVeyor integration to run tests on Windows
  (see `#180 <https://github.com/aio-libs/aioredis/pull/180>`_);

* Update multiple development requirements;

