Skip to main content

Python async client for Redis key-value store

Project description

CircleCI Test Status Latest PyPI Release Compatible Python Versions

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!

Installation

yaaredis requires a running Redis server. To install yaaredis, simply:

python3 -m pip install yaaredis

or 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]

Getting started

We have various examples in this repo which you may find useful. A few more specific cases are listed below.

Single Node Client

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())

Cluster Client

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}]}

Benchmark

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.

Contributing

Developer? See our guide on how you can contribute.

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

yaaredis-3.0.0.tar.gz (80.4 kB view hashes)

Uploaded Source

Built Distributions

yaaredis-3.0.0-cp310-cp310-manylinux_2_31_x86_64.whl (102.3 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.31+ x86-64

yaaredis-3.0.0-cp310-cp310-macosx_12_0_x86_64.whl (96.4 kB view hashes)

Uploaded CPython 3.10 macOS 12.0+ x86-64

yaaredis-3.0.0-cp39-cp39-manylinux_2_31_x86_64.whl (102.1 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.31+ x86-64

yaaredis-3.0.0-cp39-cp39-macosx_12_0_x86_64.whl (96.4 kB view hashes)

Uploaded CPython 3.9 macOS 12.0+ x86-64

yaaredis-3.0.0-cp38-cp38-manylinux_2_31_x86_64.whl (102.7 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.31+ x86-64

yaaredis-3.0.0-cp38-cp38-macosx_12_0_x86_64.whl (96.4 kB view hashes)

Uploaded CPython 3.8 macOS 12.0+ x86-64

yaaredis-3.0.0-cp37-cp37m-manylinux_2_31_x86_64.whl (102.7 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.31+ x86-64

yaaredis-3.0.0-cp37-cp37m-macosx_12_0_x86_64.whl (96.4 kB view hashes)

Uploaded CPython 3.7m macOS 12.0+ x86-64

yaaredis-3.0.0-cp36-cp36m-manylinux_2_31_x86_64.whl (102.7 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.31+ x86-64

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