yaaredis (Yet Another Async Redis (client)) is a fork of
aredis, which itself was ported from
redis-py. yaaredis provides an
efficient and user-friendly async redis client with support for Redis Server,
Cluster, and Sentinels.
To get more information please read the full documentation managed by the
upstream aredis repo. We are working on hosting our own as the projects
diverge -- stay tuned!
yaaredis requires a running Redis server. To install yaaredis, simply:
python3 -m pip install yaaredisor from source:
python3 -m pip install .Note that yaaredis also supports using hiredis as a drop-in performance
improvements. You can either install hiredis separately or make use of the
PyPI extra to make use of this functionality:
python3 -m pip install yaaredis[hiredis]We have various examples in this repo which you may find useful. A few more specific cases are listed below.
import asyncio
from yaaredis import StrictRedis
async def example():
client = StrictRedis(host='127.0.0.1', port=6379, db=0)
await client.flushdb()
await client.set('foo', 1)
assert await client.exists('foo') is True
await client.incr('foo', 100)
assert int(await client.get('foo')) == 101
await client.expire('foo', 1)
await asyncio.sleep(0.1)
await client.ttl('foo')
await asyncio.sleep(1)
assert not await client.exists('foo')
asyncio.run(example())import asyncio
from yaaredis import StrictRedisCluster
async def example():
client = StrictRedisCluster(host='172.17.0.2', port=7001)
await client.flushdb()
await client.set('foo', 1)
await client.lpush('a', 1)
print(await client.cluster_slots())
await client.rpoplpush('a', 'b')
assert await client.rpop('b') == b'1'
asyncio.run(example())
# {(10923, 16383): [{'host': b'172.17.0.2', 'node_id': b'332f41962b33fa44bbc5e88f205e71276a9d64f4', 'server_type': 'master', 'port': 7002},
# {'host': b'172.17.0.2', 'node_id': b'c02deb8726cdd412d956f0b9464a88812ef34f03', 'server_type': 'slave', 'port': 7005}],
# (5461, 10922): [{'host': b'172.17.0.2', 'node_id': b'3d1b020fc46bf7cb2ffc36e10e7d7befca7c5533', 'server_type': 'master', 'port': 7001},
# {'host': b'172.17.0.2', 'node_id': b'aac4799b65ff35d8dd2ad152a5515d15c0dc8ab7', 'server_type': 'slave', 'port': 7004}],
# (0, 5460): [{'host': b'172.17.0.2', 'node_id': b'0932215036dc0d908cf662fdfca4d3614f221b01', 'server_type': 'master', 'port': 7000},
# {'host': b'172.17.0.2', 'node_id': b'f6603ab4cb77e672de23a6361ec165f3a1a2bb42', 'server_type': 'slave', 'port': 7003}]}Please run test scripts in the benchmarks directory to confirm the
benchmarks. For a benchmark in the original yaaredis author's environment
please see: benchmark.
Developer? See our guide on how you can contribute.