Metadata-Version: 2.0
Name: aioredis
Version: 0.2.7
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
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://coveralls.io/repos/aio-libs/aioredis/badge.svg?branch=master&service=github
:target: https://coveralls.io/github/aio-libs/aioredis?branch=master
Features
--------
================================ ==============================
hiredis_ parser Yes
Pure-python parser TBD
Low-level & High-level APIs Yes
Connections Pool Yes
Pipelining support Yes
Pub/Sub support Yes
SSL/TLS support Yes
Redis Cluster support WIP
Trollius (python 2.7) No
Tested python versions `3.3, 3.4, 3.5`_
Tested for Redis server `2.6, 2.8, 3.0`_
Support for dev Redis server through low-level API
================================ ==============================
Documentation
-------------
http://aioredis.readthedocs.io/
Usage examples
--------------
Simple low-level interface:
.. code:: python
import asyncio
import aioredis
loop = asyncio.get_event_loop()
@asyncio.coroutine
def go():
conn = yield from aioredis.create_connection(
('localhost', 6379), loop=loop)
yield from conn.execute('set', 'my-key', 'value')
val = yield from conn.execute('get', 'my-key')
print(val)
conn.close()
loop.run_until_complete(go())
# will print 'value'
Simple high-level interface:
.. code:: python
import asyncio
import aioredis
loop = asyncio.get_event_loop()
@asyncio.coroutine
def go():
redis = yield from aioredis.create_redis(
('localhost', 6379), loop=loop)
yield from redis.set('my-key', 'value')
val = yield from redis.get('my-key')
print(val)
redis.close()
loop.run_until_complete(go())
# will print 'value'
Connections pool:
.. code:: python
import asyncio
import aioredis
loop = asyncio.get_event_loop()
@asyncio.coroutine
def go():
pool = yield from aioredis.create_pool(
('localhost', 6379),
minsize=5, maxsize=10,
loop=loop)
with (yield from pool) as redis: # high-level redis API instance
yield from redis.set('my-key', 'value')
print((yield from redis.get('my-key')))
yield from pool.clear() # closing all open connections
loop.run_until_complete(go())
Requirements
------------
* Python_ 3.3+
* asyncio_ or Python_ 3.4+
* hiredis_
.. note::
hiredis is preferred requirement.
Pure-python fallback protocol parser is TBD.
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
.. _3.3, 3.4, 3.5:
.. _2.6, 2.8, 3.0:
.. _travis: https://travis-ci.org/aio-libs/aioredis
Changes
-------
0.2.7 (2016-05-27)
^^^^^^^^^^^^^^^^^^
* ``create_pool()`` minsize default value changed to 1;
* Fixed cancellation of wait_closed
(see `#118 <https://github.com/aio-libs/aioredis/issues/118>`_);
* Fixed ``time()`` covertion to float
(see `#126 <https://github.com/aio-libs/aioredis/issues/126>`_);
* Fixed ``hmset()`` method to return bool instead of ``b'OK'``
(see `#126`_);
* Fixed multi/exec + watch issue (changed watch variable was causing
``tr.execute()`` to fail)
(see `#121 <https://github.com/aio-libs/aioredis/issues/121>`_);
* Replace ``asyncio.Future`` uses with utility method
(get ready to Python 3.5.2 ``loop.create_future()``);
* Tests switched from unittest to pytest (see `#126`_);
* Documentation updates;
0.2.6 (2016-03-30)
^^^^^^^^^^^^^^^^^^
* Fixed Multi/Exec transactions cancellation issue
(see `#110 <https://github.com/aio-libs/aioredis/issues/110>`_
and `#114 <https://github.com/aio-libs/aioredis/issues/114>`_);
* Fixed Pub/Sub subscribe concurrency issue
(see `#113 <https://github.com/aio-libs/aioredis/issues/113>`_
and `#115 <https://github.com/aio-libs/aioredis/issues/115>`_);
* Add SSL/TLS support
(see `#116 <https://github.com/aio-libs/aioredis/issues/116>`_);
* ``aioredis.ConnectionClosedError`` raised in ``execute_pubsub`` as well
(see `#108 <https://github.com/aio-libs/aioredis/issues/108>`_);
* ``Redis.slaveof()`` method signature changed: now to disable
replication one should call ``redis.slaveof(None)`` instead of ``redis.slaveof()``;
* More tests added;
0.2.5 (2016-03-02)
^^^^^^^^^^^^^^^^^^
* Close all Pub/Sub channels on connection close
(see `#88 <https://github.com/aio-libs/aioredis/issues/88>`_);
* Add ``iter()`` method to ``aioredis.Channel`` allowing to use it
with ``async for``
(see `#89 <https://github.com/aio-libs/aioredis/issues/89>`_);
* Inline code samples in docs made runnable and downloadable
(see `#92 <https://github.com/aio-libs/aioredis/issues/92>`_);
* Python 3.5 examples converted to use ``async``/``await`` syntax
(see `#93 <https://github.com/aio-libs/aioredis/issues/93>`_);
* Fix Multi/Exec to honor encoding parameter
(see `#94 <https://github.com/aio-libs/aioredis/issues/94>`_
and `#97 <https://github.com/aio-libs/aioredis/issues/97>`_);
* Add debug message in ``create_connection``
(see `#90 <https://github.com/aio-libs/aioredis/issues/90>`_);
* Replace ``asyncio.async`` calls with wrapper that respects asyncio version
(see `#101 <https://github.com/aio-libs/aioredis/issues/101>`_);
* Use NODELAY option for TCP sockets
(see `#105 <https://github.com/aio-libs/aioredis/issues/105>`_);
* New ``aioredis.ConnectionClosedError`` exception added. Raised if
connection to Redis server is lost
(see `#108 <https://github.com/aio-libs/aioredis/issues/108>`_
and `#109 <https://github.com/aio-libs/aioredis/issues/109>`_);
* Fix RedisPool to close and drop connection in subscribe mode on release;
* Fix ``aioredis.util.decode`` to recursively decode list responses;
* More examples added and docs updated;
* Add google groups link to README;
* Bump year in LICENSE and docs;
0.2.4 (2015-10-13)
^^^^^^^^^^^^^^^^^^
* Python 3.5 ``async`` support:
- New scan commands API (``iscan``, ``izscan``, ``ihscan``);
- Pool made awaitable (allowing ``with await pool: ...`` and ``async
with pool.get() as conn:`` constructs);
* Fixed dropping closed connections from free pool
(see `#83 <https://github.com/aio-libs/aioredis/issues/83>`_);
* Docs updated;
0.2.3 (2015-08-14)
^^^^^^^^^^^^^^^^^^
* Redis cluster support work in progress;
* Fixed pool issue causing pool growth over max size & ``acquire`` call hangs
(see `#71 <https://github.com/aio-libs/aioredis/issues/71>`_);
* ``info`` server command result parsing implemented;
* Fixed behavior of util functions
(see `#70 <https://github.com/aio-libs/aioredis/issues/70>`_);
* ``hstrlen`` command added;
* Few fixes in examples;
* Few fixes in documentation;
0.2.2 (2015-07-07)
^^^^^^^^^^^^^^^^^^
* Decoding data with ``encoding`` parameter now takes into account
list (array) replies
(see `#68 <https://github.com/aio-libs/aioredis/pull/68>`_);
* ``encoding`` parameter added to following commands:
- generic commands: keys, randomkey;
- hash commands: hgetall, hkeys, hmget, hvals;
- list commands: blpop, brpop, brpoplpush, lindex, lpop, lrange, rpop, rpoplpush;
- set commands: smembers, spop, srandmember;
- string commands: getrange, getset, mget;
* Backward incompatibility:
``ltrim`` command now returns bool value instead of 'OK';
* Tests updated;
0.2.1 (2015-07-06)
^^^^^^^^^^^^^^^^^^
* Logging added (aioredis.log module);
* Fixed issue with ``wait_message`` in pub/sub
(see `#66 <https://github.com/aio-libs/aioredis/issues/66>`_);
0.2.0 (2015-06-04)
^^^^^^^^^^^^^^^^^^
* Pub/Sub support added;
* Fix in ``zrevrangebyscore`` command
(see `#62 <https://github.com/aio-libs/aioredis/pull/62>`_);
* Fixes/tests/docs;