Skip to main content

asyncio (PEP 3156) Redis support

Project description

asyncio (PEP 3156) Redis client library.

https://travis-ci.org/aio-libs/aioredis.svg?branch=master https://coveralls.io/repos/aio-libs/aioredis/badge.svg?branch=master&service=github

Features

hiredis parser Yes
Pure-python parser TBD
Low-level & High-level APIs Yes
Connections Pool Yes
Pipelining support Yes
Pub/Sub 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

Usage examples

Simple low-level interface:

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:

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:

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

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.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;

Project details


Download files

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

Files for aioredis, version 0.2.5
Filename, size File type Python version Upload date Hashes
Filename, size aioredis-0.2.5-py3-none-any.whl (36.5 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size aioredis-0.2.5.tar.gz (26.5 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page