asyncio (PEP 3156) Redis client library.
hiredis parser |
|
Pure-python parser |
|
Low-level & High-level APIs |
|
Connections Pool |
|
Pipelining support |
|
Pub/Sub support |
|
SSL/TLS support |
|
Sentinel support |
|
Redis Cluster support |
|
Trollius (python 2.7) |
|
Tested CPython versions | |
Tested PyPy3 versions | |
Tested for Redis server | |
Support for dev Redis server |
|
http://aioredis.readthedocs.io/
Simple high-level interface with connections pool:
import asyncio
import aioredis
async def go():
redis = await aioredis.create_redis_pool(
'redis://localhost')
await redis.set('my-key', 'value')
val = await redis.get('my-key', encoding='utf-8')
print(val)
redis.close()
await redis.wait_closed()
asyncio.run(go())
# will print 'value'
Using a pool among multiple coroutine calls:
import asyncio
import string
import aioredis
async def go(r, key, value):
await r.set(key, value)
val = await r.get(key)
print(f"Got {key} -> {val}")
async def main(loop):
r = await aioredis.create_redis_pool(
"redis://localhost", minsize=5, maxsize=10, loop=loop
)
try:
return await asyncio.gather(
*(
go(r, i, j)
for i, j in zip(string.ascii_uppercase, string.ascii_lowercase)
),
return_exceptions=True,
)
finally:
r.close()
await r.wait_closed()
if __name__ == "__main__":
loop = asyncio.get_event_loop()
res = loop.run_until_complete(main(loop))
Note
hiredis is preferred requirement. Pure-python protocol parser is implemented as well and can be used through parser
parameter.
Benchmarks can be found here: https://github.com/popravich/python-redis-benchmark
aio-libs google group: https://groups.google.com/forum/#!forum/aio-libs
Or gitter room: https://gitter.im/aio-libs/Lobby
The aioredis is offered under MIT license.