Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!

asyncio (PEP 3156) Redis support

Project Description

asyncio (PEP 3156) Redis client library.

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.5, 3.6 [2]
Tested PyPy3 versions 5.9.0
Tested for Redis server 2.6, 2.8, 3.0, 3.2, 4.0
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.
[2]For Python 3.3, 3.4 support use aioredis v0.3.

Usage examples

Simple low-level interface:

import asyncio
import aioredis

loop = asyncio.get_event_loop()

async def go():
    conn = await aioredis.create_connection(
        'redis://localhost', 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(
        'redis://localhost', 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(
        'redis://localhost',
        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

Note

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

Benchmarks

Benchmarks can be found here: https://github.com/popravich/python-redis-benchmark

Discussion list

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

Or gitter room: https://gitter.im/aio-libs/Lobby

License

The aioredis is offered under MIT license.

Changes

1.0.0 (2017-11-17)

NEW:

  • Important! Drop Python 3.3, 3.4 support; (see #321, #323 and #326);
  • Important! Connections pool has been refactored; now create_redis function will yield Redis instance instead of RedisPool (see #129);
  • Important! Change sorted set commands reply format: return list of tuples instead of plain list for commands accepting withscores argument (see #334);
  • Important! Change hscan command reply format: return list of tuples instead of mixed key-value list (see #335);
  • Implement Redis URI support as supported address argument value (see #322);
  • Dropped create_reconnecting_redis, create_redis_pool should be used instead;
  • Implement custom StreamReader (see #273);
  • Implement Sentinel support (see #181);
  • Implement pure-python parser (see #212);
  • Add migrate_keys command (see #187);
  • Add zrevrangebylex command (see #201);
  • Add command, command_count, command_getkeys and command_info commands (see #229);
  • Add ping support in pubsub connection (see #264);
  • Add exist parameter to zadd command (see #288);
  • Add MaxClientsError and implement ReplyError specialization (see #325);
  • Add encoding parameter to sorted set commands (see #289);

FIX:

  • Fix CancelledError in conn._reader_task (see #301);
  • Fix pending commands cancellation with CancelledError, use explicit exception instead of calling cancel() method (see #316);
  • Correct error message on Sentinel discovery of master/slave with password (see #327);
  • Fix bytearray support as command argument (see #329);
  • Fix critical bug in patched asyncio.Lock (see #256);
  • Fix Multi/Exec transaction canceled error (see #225);
  • Add missing arguments to create_redis and create_redis_pool;
  • Fix deprecation warning (see #191);
  • Make correct __aiter__() (see #192);
  • Backward compatibility fix for with (yield from pool) as conn: (see #205);
  • Fixed pubsub receiver stop() (see #211);

MISC:

  • Multiple test fixes;
  • Add PyPy3 to build matrix;
  • Update dependencies versions;
  • Add missing Python 3.6 classifier;

0.3.5 (2017-11-08)

FIX:

  • Fix for indistinguishable futures cancellation with asyncio.CancelledError (see #316), cherry-picked from master;

0.3.4 (2017-10-25)

FIX:

  • Fix time command result decoding when using connection-wide encoding setting (see #266);

0.3.3 (2017-06-30)

FIX:

  • Critical bug fixed in patched asyncio.Lock (see #256);

0.3.2 (2017-06-21)

NEW:

  • Added zrevrangebylex command (see #201), cherry-picked from master;
  • Add connection timeout (see #221), cherry-picked from master;

FIX:

  • Fixed pool close warning (see #239 and #236), cherry-picked from master;
  • Fixed asyncio Lock deadlock issue (see #231 and #241);

0.3.1 (2017-05-09)

FIX:

  • Fix pubsub Receiver missing iter() method (see #203);

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;
Release History

Release History

This version
History Node

1.0.0

History Node

1.0.0b2

History Node

1.0.0b1

History Node

0.3.5

History Node

0.3.4

History Node

0.3.3

History Node

0.3.2

History Node

0.3.1

History Node

0.3.0

History Node

0.2.9

History Node

0.2.8

History Node

0.2.7

History Node

0.2.6

History Node

0.2.5

History Node

0.2.4

History Node

0.2.3

History Node

0.2.2

History Node

0.2.1

History Node

0.2.0

History Node

0.1.5

History Node

0.1.4

History Node

0.1.3

History Node

0.1.2

History Node

0.1.1

History Node

0.1.0

History Node

0.0.2

Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
aioredis-1.0.0-py3-none-any.whl (59.9 kB) Copy SHA256 Checksum SHA256 py3 Wheel Nov 17, 2017
aioredis-1.0.0.tar.gz (135.4 kB) Copy SHA256 Checksum SHA256 Source Nov 17, 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