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

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:

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

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.7 (2016-05-27)

  • create_pool() minsize default value changed to 1;

  • Fixed cancellation of wait_closed (see #118);

  • Fixed time() covertion 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;

Project details


Download files

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

Source Distribution

aioredis-0.2.7.tar.gz (29.1 kB view details)

Uploaded Source

Built Distribution

aioredis-0.2.7-py3-none-any.whl (38.4 kB view details)

Uploaded Python 3

File details

Details for the file aioredis-0.2.7.tar.gz.

File metadata

  • Download URL: aioredis-0.2.7.tar.gz
  • Upload date:
  • Size: 29.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for aioredis-0.2.7.tar.gz
Algorithm Hash digest
SHA256 32f563ed897a31981b115f7e1b7cbae3ba01c4015eef4a3aee6470641370e1d0
MD5 6e8abc474652ffe24f36517d2cf2a86c
BLAKE2b-256 a6a563a21921db6241369c04f4c3b7aa757e1a4e30cbd441c4b9e93ffe6c6e82

See more details on using hashes here.

File details

Details for the file aioredis-0.2.7-py3-none-any.whl.

File metadata

File hashes

Hashes for aioredis-0.2.7-py3-none-any.whl
Algorithm Hash digest
SHA256 43e2dbd0d33d0e848c4c35ba404ea17c5c3ad94b0328cd48bad696b9515a2582
MD5 cad97916ef0eae95d0d34475e098ba3c
BLAKE2b-256 9b0ca8ab174cc29379bc7d004d241f65da0009fde6876a8d47db3c32d8e3b5ed

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page