asyncio (PEP 3156) Redis support
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 |
|
Tested for Redis server |
|
Support for dev Redis server |
through low-level API |
Documentation
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.9 (2016-10-24)
NEW:
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)
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.