This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

asyncio (PEP 3156) Redis client library.

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, 3.2
Support for dev Redis server through low-level API

Usage examples

Simple low-level interface:

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:

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:

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)
    with await pool as redis:    # high-level redis API instance
        await redis.set('my-key', 'value')
        print(await redis.get('my-key'))
    # graceful shutdown
    pool.close()
    await pool.wait_closed()

loop.run_until_complete(go())

Requirements

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.

Changes

0.3.0 (2017-01-11)

NEW:

  • Pub/Sub connection commands accept Channel instances (see #168);
  • Implement new Pub/Sub MPSC (multi-producers, single-consumer) Queue – aioredis.pubsub.Receiver (see #176);
  • Add aioredis.abc module providing abstract base classes defining interface for basic lib components; (see #176);
  • Implement Geo commands support (see #177 and #179);

FIX:

  • Minor tests fixes;

MISC:

  • Update examples and docs to use async/await syntax also keeping yield from examples for history (see #173);
  • Reflow Travis CI configuration; add Python 3.6 section (see #170);
  • Add AppVeyor integration to run tests on Windows (see #180);
  • Update multiple development requirements;

0.2.9 (2016-10-24)

NEW:

  • Allow multiple keys in EXISTS command (see #156 and #157);

FIX:

  • Close RedisPool when connection to Redis failed (see #136);
  • Add simple INFO command argument validation (see #140);
  • Remove invalid uses of next()

MISC:

  • Update devel.rst docs; update Pub/Sub Channel docs (cross-refs);
  • Update MANIFEST.in to include docs, examples and tests in source bundle;

0.2.8 (2016-07-22)

NEW:

  • Add hmset_dict command (see #130);
  • Add RedisConnection.address property;
  • RedisPool minsize/maxsize must not be None;
  • Implement close()/wait_closed()/closed interface for pool (see #128);

FIX:

  • Add test for hstrlen;
  • Test fixes

MISC:

  • Enable Redis 3.2.0 on Travis;
  • Add spell checking when building docs (see #132);
  • Documentation updated;

0.2.7 (2016-05-27)

  • create_pool() minsize default value changed to 1;
  • Fixed cancellation of wait_closed (see #118);
  • Fixed time() convertion to float (see #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);
  • 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 and #114);
  • Fixed Pub/Sub subscribe concurrency issue (see #113 and #115);
  • Add SSL/TLS support (see #116);
  • aioredis.ConnectionClosedError raised in execute_pubsub as well (see #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);
  • Add iter() method to aioredis.Channel allowing to use it with async for (see #89);
  • Inline code samples in docs made runnable and downloadable (see #92);
  • Python 3.5 examples converted to use async/await syntax (see #93);
  • Fix Multi/Exec to honor encoding parameter (see #94 and #97);
  • Add debug message in create_connection (see #90);
  • Replace asyncio.async calls with wrapper that respects asyncio version (see #101);
  • Use NODELAY option for TCP sockets (see #105);
  • New aioredis.ConnectionClosedError exception added. Raised if connection to Redis server is lost (see #108 and #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);
  • 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);
  • info server command result parsing implemented;
  • Fixed behavior of util functions (see #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);

  • 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);

0.2.0 (2015-06-04)

  • Pub/Sub support added;
  • Fix in zrevrangebyscore command (see #62);
  • Fixes/tests/docs;
Release History

Release History

0.3.0

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.9

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.8

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.7

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.6

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.5

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.4

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.3

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.1.5

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.1.4

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.1.3

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.1.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.1.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.1.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.0.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
aioredis-0.3.0-py3-none-any.whl (46.3 kB) Copy SHA256 Checksum SHA256 py3 Wheel Jan 11, 2017
aioredis-0.3.0.tar.gz (99.5 kB) Copy SHA256 Checksum SHA256 Source Jan 11, 2017

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting