asyncio (PEP 3156) Redis support
This project has been archived.
The maintainers of this project have marked this project as archived. No new releases are expected.
Project description
aioredis
asyncio (3156) Redis client library.
The library is intended to provide simple and clear interface to Redis based on asyncio.
Features
| Feature | Supported |
|---|---|
| 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 versions | 3.6, 3.7, 3.8, 3.9, 3.10 |
| Tested for Redis servers | 5.0, 6.0 |
| Support for dev Redis server | through 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
- Issue Tracker: https://github.com/aio-libs/aioredis/issues
- Google Group: https://groups.google.com/g/aio-libs
- Gitter: https://gitter.im/aio-libs/Lobby
- Source Code: https://github.com/aio-libs/aioredis
- Contributor's guide: devel
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()uponcreate_pool()exception.
(see #671)
Deprecations and Removals
- Drop explicit loop requirement in API.
Deprecate
loopargument. Throw warning in Python 3.8+ if explicitloopis passed to methods.
(see #666)
Misc
- (#643, #646, #648)
1.3.0 (2019-09-24)
Features
- Added
xdelandxtrimmethod which missed incommands/streams.py& also added unit test code for them
(see #438) - Add
countargument tospopcommand
(see #485) - Add support for
zpopmaxandzpopminredis commands
(see #550) - Add
towncrier: change notes are now stored inCHANGES.txt
(see #576) - Type hints for the library
(see #584) - A few additions to the sorted set commands:
- the blocking pop commands:
BZPOPMAXandBZPOPMIN - the
CHandINCRoptions of theZADDcommand
(see #618) - Added
no_ackparameter toxread_groupstreams method incommands/streams.py
(see #625)
Bugfixes
- Fix for sensitive logging
(see #459) - Fix slow memory leak in
wait_closedimplementation
(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
sendtosyscalls
(see #464) and #473) - Python 3.7 compatibility fixes
(see #426) - Fix typos in documentation
(see #400) - Fix
INFOcommand result parsing
(see #405) - Fix bug in
ConnectionsPool._drop_closedmethod
(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_opargument toflushallandflushdbcommands
(see #364, #370)
Bugfixes
- Important! Fix Sentinel sentinel client with pool
minsizegreater than 1
(see #380) - Fix
SentinelPool.discover_timeoutusage
(see #379) - Fix
Receiverhang on disconnect
(see #354, #366) - Fix an issue with
subscribe/psubscribewith 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_redisfunction will yieldRedisinstance instead ofRedisPool
(see #129) -
Important! Change sorted set commands reply format: return list of tuples instead of plain list for commands accepting
withscoresargument
(see #334) -
Important! Change
hscancommand reply format: return list of tuples instead of mixed key-value list
(see #335) -
Implement Redis URI support as supported
addressargument value
(see #322) -
Dropped
create_reconnecting_redis,create_redis_poolshould be used instead -
Implement custom
StreamReader
(see #273) -
Implement Sentinel support
(see #181) -
Implement pure-python parser
(see #212) -
Add
migrate_keyscommand
(see #187) -
Add
zrevrangebylexcommand
(see #201) -
Add
command,command_count,command_getkeysandcommand_infocommands
(see #229) -
Add
pingsupport in pubsub connection
(see #264) -
Add
existparameter tozaddcommand
(see #288) -
Add
MaxClientsErrorand implementReplyErrorspecialization
(see #325) -
Add
encodingparameter to sorted set commands
(see #289)
Bugfixes
- Fix
CancelledErrorinconn._reader_task
(see #301) - Fix pending commands cancellation with
CancelledError, use explicit exception instead of callingcancel()method
(see #316) - Correct error message on Sentinel discovery of master/slave with password
(see #327) - Fix
bytearraysupport 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_redisandcreate_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
zrevrangebylexcommand
(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
Channelinstances
(see #168) - Implement new Pub/Sub MPSC (multi-producers, single-consumer) Queue --
aioredis.pubsub.Receiver
(see #176) - Add
aioredis.abcmodule 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/awaitsyntax also keepingyield fromexamples 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
EXISTScommand
(see #156, #157)
Bugfixes
- Close RedisPool when connection to Redis failed
(see #136) - Add simple
INFOcommand 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_dictcommand
(see #130) - Add
RedisConnection.addressproperty - RedisPool
minsize/maxsizemust not beNone - Implement
close()/wait_closed()/closedinterface 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 wait_closed
(see #118) - Fixed
time()conversion to float
(see #126) - Fixed
hmset()method to return bool instead ofb'OK'
(see [#12)) - Fixed multi/exec + watch issue (changed watch variable was causing
tr.execute()to fail)
(see #121) - Replace
asyncio.Futureuses with utility method
(get ready to Python 3.5.2loop.create_future()) - Tests switched from unittest to pytest (see [#12))
- Documentation updates
0.2.6 (2016-03-30)
- Fixed Multi/Exec transactions cancellation issue
(see #110, #114) - Fixed Pub/Sub subscribe concurrency issue
(see #113, #115) - Add SSL/TLS support
(see #116) aioredis.ConnectionClosedErrorraised inexecute_pubsubas well
(see #108)Redis.slaveof()method signature changed: now to disable replication one should callredis.slaveof(None)instead ofredis.slaveof()- More tests added
0.2.5 (2016-03-02)
- Close all Pub/Sub channels on connection close
(see #88) - Add
iter()method toaioredis.Channelallowing to use it withasync for
(see #89) - Inline code samples in docs made runnable and downloadable
(see #92) - Python 3.5 examples converted to use
async/awaitsyntax
(see #93) - Fix Multi/Exec to honor encoding parameter
(see #94, #97) - Add debug message in
create_connection
(see #90) - Replace
asyncio.asynccalls with wrapper that respects asyncio version
(see #101) - Use NODELAY option for TCP sockets
(see #105) - New
aioredis.ConnectionClosedErrorexception added. Raised if connection to Redis server is lost
(see #108, #109) - Fix RedisPool to close and drop connection in subscribe mode on release
- Fix
aioredis.util.decodeto 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
asyncsupport:- New scan commands API (
iscan,izscan,ihscan) - Pool made awaitable (allowing
with await pool: ...andasync with pool.get() as conn:constructs)
- New scan commands API (
-
Fixed dropping closed connections from free pool
(see #83) -
Docs updated
0.2.3 (2015-08-14)
- Redis cluster support work in progress
- Fixed pool issue causing pool growth over max size &
acquirecall hangs
(see #71) infoserver command result parsing implemented- Fixed behavior of util functions
(see #70) hstrlencommand added- Few fixes in examples
- Few fixes in documentation
0.2.2 (2015-07-07)
-
Decoding data with
encodingparameter now takes into account list (array) replies
(see #68) -
encodingparameter 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:
ltrimcommand now returns bool value instead of 'OK' -
Tests updated
0.2.1 (2015-07-06)
- Logging added (aioredis.log module)
- Fixed issue with
wait_messagein pub/sub
(see #66)
0.2.0 (2015-06-04)
- Pub/Sub support added
- Fix in
zrevrangebyscorecommand
(see #62) - Fixes/tests/docs
0.1.5 (2014-12-09)
- AutoConnector added
- wait_closed method added for clean connections shutdown
zscorecommand fixed- Test fixes
0.1.4 (2014-09-22)
-
Dropped following Redis methods --
Redis.multi(),Redis.exec(),Redis.discard() -
Redis.multi_exechack'ish property removed -
Redis.multi_exec()method added -
High-level commands implemented:
- generic commands (tests)
- transactions commands (api stabilization).
-
Backward incompatibilities:
-
Following sorted set commands' API changed:
zcount,zrangebyscore,zremrangebyscore,zrevrangebyscore -
set string command' API changed
-
0.1.3 (2014-08-08)
-
RedisConnection.execute refactored to support commands pipelining
(see #33) -
Several fixes
-
WIP on transactions and commands interface
-
High-level commands implemented and tested:
- hash commands
- hyperloglog commands
- set commands
- scripting commands
- string commands
- list commands
0.1.2 (2014-07-31)
create_connection,create_pool,create_redisfunctions updated: db and password arguments made keyword-only
(see #26)- Fixed transaction handling
(see #32) - Response decoding
(see #16)
0.1.1 (2014-07-07)
- Transactions support (in connection, high-level commands have some issues)
- Docs & tests updated.
0.1.0 (2014-06-24)
- Initial release
- RedisConnection implemented
- RedisPool implemented
- Docs for RedisConnection & RedisPool
- WIP on high-level API.
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.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aioredis-2.0.1.tar.gz.
File metadata
- Download URL: aioredis-2.0.1.tar.gz
- Upload date:
- Size: 111.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eaa51aaf993f2d71f54b70527c440437ba65340588afeb786cd87c55c89cd98e
|
|
| MD5 |
8f3547af83ef4b863b18c19f23166a9d
|
|
| BLAKE2b-256 |
2ecf9eb144a0b05809ffc5d29045c4b51039000ea275bc1268d0351c9e7dfc06
|
File details
Details for the file aioredis-2.0.1-py3-none-any.whl.
File metadata
- Download URL: aioredis-2.0.1-py3-none-any.whl
- Upload date:
- Size: 71.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ac0d0b3b485d293b8ca1987e6de8658d7dafcca1cddfcd1d506cae8cdebfdd6
|
|
| MD5 |
24f4f9eec32d288fcaa631ca8c40496a
|
|
| BLAKE2b-256 |
9ba90da089c3ae7a31cbcd2dcf0214f6f571e1295d292b6139e2bac68ec081d0
|