Give AlbumentationsX a star on GitHub — it powers this leaderboard

Star on GitHub

aioredis

asyncio (PEP 3156) Redis support

Rank: #2857Downloads: 1,875,967 (30 days)Stars: 2,293Forks: 327

Description

aioredis

asyncio (3156) Redis client library.

The library is intended to provide simple and clear interface to Redis based on asyncio.

Features

FeatureSupported
hiredis parser:white_check_mark:
Pure-python parser:white_check_mark:
Low-level & High-level APIs:white_check_mark:
Pipelining support:white_check_mark:
Multi/Exec support:white_check_mark:
Connections Pool:white_check_mark:
Pub/Sub support:white_check_mark:
Sentinel support:white_check_mark:
ACL support:white_check_mark:
Streams support:white_check_mark:
Redis Cluster support:no_entry_sign:
Tested Python versions3.6, 3.7, 3.8, 3.9, 3.10
Tested for Redis servers5.0, 6.0
Support for dev Redis serverthrough low-level API

Installation

The easiest way to install aioredis is by using the package on PyPi:

pip install aioredis

Recommended with hiredis for performance and stability reasons:

pip install hiredis

Requirements

  • Python 3.6+
  • hiredis (Optional but recommended)
  • async-timeout
  • typing-extensions

Benchmarks

Benchmarks can be found here: https://github.com/popravich/python-redis-benchmark

Contribute

Feel free to file an issue or make pull request if you find any bugs or have some suggestions for library improvement.

License

The aioredis is offered under a MIT License.

Changelog

2.0.1 - (2021-12-20)

Features

  • Added Python 3.10 to CI & Updated the Docs (see #1160)
  • Enable mypy in CI (see #1101)
  • Synchronized reading the responses from a connection (see #1106)

Fixes

  • Remove del from Redis (Fixes #1115) (see #1227)
  • fix socket.error raises (see #1129)
  • Fix buffer is closed error when using PythonParser class (see #1213)

2.0.0 - (2021-03-18)

Features

  • Port redis-py's client implementation to aioredis.
    (see #891)

  • Make hiredis an optional dependency.
    (see #917)

1.3.1 (2019-12-02)

Bugfixes

  • Fix transaction data decoding
    (see #657)
  • Fix duplicate calls to pool.wait_closed() upon create_pool() exception.
    (see #671)

Deprecations and Removals

  • Drop explicit loop requirement in API. Deprecate loop argument. Throw warning in Python 3.8+ if explicit loop is passed to methods.
    (see #666)

Misc

  • (#643, #646, #648)

1.3.0 (2019-09-24)

Features

  • Added xdel and xtrim method which missed in commands/streams.py & also added unit test code for them
    (see #438)
  • Add count argument to spop command
    (see #485)
  • Add support for zpopmax and zpopmin redis commands
    (see #550)
  • Add towncrier: change notes are now stored in CHANGES.txt
    (see #576)
  • Type hints for the library
    (see #584)
  • A few additions to the sorted set commands:
  • the blocking pop commands: BZPOPMAX and BZPOPMIN
  • the CH and INCR options of the ZADD command
    (see #618)
  • Added no_ack parameter to xread_group streams method in commands/streams.py
    (see #625)

Bugfixes

  • Fix for sensitive logging
    (see #459)
  • Fix slow memory leak in wait_closed implementation
    (see #498)
  • Fix handling of instances were Redis returns null fields for a stream message (see #605)

Improved Documentation

  • Rewrite "Getting started" documentation.
    (see #641)

Misc

  • #585, #611, #612, #619, #620, #642)

1.2.0 (2018-10-24)

Features

  • Implemented new Stream command support
    (see #299)
  • Reduce encode_command() cost about 60%
    (see #397)

Bugfixes

  • Fix pipeline commands buffering was causing multiple sendto syscalls
    (see #464) and #473)
  • Python 3.7 compatibility fixes
    (see #426)
  • Fix typos in documentation
    (see #400)
  • Fix INFO command result parsing
    (see #405)
  • Fix bug in ConnectionsPool._drop_closed method
    (see #461)

Miscellaneous

  • Update dependencies versions
  • Multiple tests improvements

1.1.0 (2018-02-16)

Features

  • Implement new commands: wait, touch, swapdb, unlink
    (see #376)
  • Add async_op argument to flushall and flushdb commands
    (see #364, #370)

Bugfixes

  • Important! Fix Sentinel sentinel client with pool minsize greater than 1
    (see #380)
  • Fix SentinelPool.discover_timeout usage
    (see #379)
  • Fix Receiver hang on disconnect
    (see #354, #366)
  • Fix an issue with subscribe/psubscribe with empty pool
    (see #351, #355)
  • Fix an issue when StreamReader's feed_data is called before set_parser
    (see #347)

Miscellaneous

  • Update dependencies versions
  • Multiple test fixes

1.0.0 (2017-11-17)

Features

  • Important! Drop Python 3.3, 3.4 support
    (see #321, #323, #326)

  • Important! Connections pool has been refactored; now create_redis function will yield Redis instance instead of RedisPool
    (see #129)

  • Important! Change sorted set commands reply format: return list of tuples instead of plain list for commands accepting withscores argument
    (see #334)

  • Important! Change hscan command reply format: return list of tuples instead of mixed key-value list
    (see #335)

  • Implement Redis URI support as supported address argument value
    (see #322)

  • Dropped create_reconnecting_redis, create_redis_pool should be used instead

  • Implement custom StreamReader
    (see #273)

  • Implement Sentinel support
    (see #181)

  • Implement pure-python parser
    (see #212)

  • Add migrate_keys command
    (see #187)

  • Add zrevrangebylex command
    (see #201)

  • Add command, command_count, command_getkeys and command_info commands
    (see #229)

  • Add ping support in pubsub connection
    (see #264)

  • Add exist parameter to zadd command
    (see #288)

  • Add MaxClientsError and implement ReplyError specialization
    (see #325)

  • Add encoding parameter to sorted set commands
    (see #289)

Bugfixes

  • Fix CancelledError in conn._reader_task
    (see #301)
  • Fix pending commands cancellation with CancelledError, use explicit exception instead of calling cancel() method
    (see #316)
  • Correct error message on Sentinel discovery of master/slave with password
    (see #327)
  • Fix bytearray support as command argument
    (see #329)
  • Fix critical bug in patched asyncio.Lock
    (see #256)
  • Fix Multi/Exec transaction canceled error
    (see #225)
  • Add missing arguments to create_redis and create_redis_pool
  • Fix deprecation warning
    (see #191)
  • Make correct __aiter__()
    (see #192)
  • Backward compatibility fix for with (yield from pool) as conn:
    (see #205)
  • Fixed pubsub receiver stop()
    (see #211)

Miscellaneous

  • Multiple test fixes
  • Add PyPy3 to build matrix
  • Update dependencies versions
  • Add missing Python 3.6 classifier

0.3.5 (2017-11-08)

Bugfixes

  • Fix for indistinguishable futures cancellation with asyncio.CancelledError
    (see #316, cherry-picked from master)

0.3.4 (2017-10-25)

Bugfixes

  • Fix time command result decoding when using connection-wide encoding setting
    (see #266)

0.3.3 (2017-06-30)

Bugfixes

  • Critical bug fixed in patched asyncio.Lock
    (see #256)

0.3.2 (2017-06-21)

Features

  • Added zrevrangebylex command
    (see #201 cherry-picked from master)
  • Add connection timeout
    (see #221, cherry-picked from master)

Bugfixes

  • Fixed pool close warning
    (see #239, #236, cherry-picked from master
  • Fixed asyncio Lock deadlock issue
    (see #231, #241)

0.3.1 (2017-05-09)

Bugfixes

  • Fix pubsub Receiver missing iter() method
    (see #203)

0.3.0 (2017-01-11)

Features

  • Pub/Sub connection commands accept Channel instances
    (see #168)
  • Implement new Pub/Sub MPSC (multi-producers, single-consumer) Queue -- aioredis.pubsub.Receiver
    (see #176)
  • Add aioredis.abc module providing abstract base classes defining interface for basic lib components (see #176)
  • Implement Geo commands support
    (see #177, #179)

Bugfixes

  • Minor tests fixes

Miscellaneous

  • Update examples and docs to use async/await syntax also keeping yield from examples for history
    (see #173)
  • Reflow Travis CI configuration; add Python 3.6 section
    (see #170)
  • Add AppVeyor integration to run tests on Windows
    (see #180)
  • Update multiple development requirements

0.2.9 (2016-10-24)

Features

  • Allow multiple keys in EXISTS command
    (see #156, #157)

Bugfixes

  • Close RedisPool when connection to Redis failed
    (see #136)
  • Add simple INFO command argument validation
    (see #140)
  • Remove invalid uses of next()

Miscellaneous

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

Features

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

Bugfixes

  • Add test for hstrlen
  • Test fixes

Miscellaneous

  • 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