NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3405 most downloaded on PyPI
asyncio (PEP 3156) Redis support
Last release 5 years ago
no release in 18 months
Release timing varies
gaps range from 9 days to 1.3 years
Nearly every release is documented
notes for 29 of 30 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
34 releases · first in 2014
Added Python 3.10 to CI & Updated the Docs (see #1160 )
Version 2.0 is a complete rewrite of aioredis. Starting with this version, aioredis now follows the API of redis-py, so you can easily adapt synchrono
One column per quarter.
Version 2.0 is a complete rewrite of aioredis. Starting with this version, aioredis now follows the API of redis-py, so you can easily adapt synchronous code that uses redis-py for async applications with aioredis-py.
NOTE: This version is not compatible with earlier versions of aioredis. If you upgrade, you will need to make code changes.
For more details, read our documentation on migrating to version 2.0.
Port redis-py's client implementation to aioredis.
(see #891)
Make hiredis an optional dependency.
(see #917)
Bump version: release 2.0.0 beta 1
Bump version: release 2.0.0 beta 1
add __await__ method to Pipeline class to prevent AttributeError (see #1029)
Drop explicit loop requirement in API. Deprecate loop argument. Throw warning in Python 3.8+ if explicit loop is passed to methods (see #666).
pool.wait_closed() upon create_pool() exception (see #671);loop argument.
Throw warning in Python 3.8+ if explicit loop is passed to methods (see #666).<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="
Features
- Added ``xdel`` and ``xtrim`` method which missed in ``commands/streams.py`` & also added unit test code for them
(see `#438 <https://github.com/aio-libs/aioredis/issues/438>`_);
- Add ``count`` argument to ``spop`` command
(see `#485 <https://github.com/aio-libs/aioredis/issues/485>`_);
- Add support for ``zpopmax`` and ``zpopmin`` redis commands
(see `#550 <https://github.com/aio-libs/aioredis/issues/550>`_);
- Add ``towncrier``: change notes are now stored in ``CHANGES.txt``
(see `#576 <https://github.com/aio-libs/aioredis/issues/576>`_);
- Type hints for the library
(see `#584 <https://github.com/aio-libs/aioredis/issues/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 <https://github.com/aio-libs/aioredis/issues/618>`_);
- Added ``no_ack`` parameter to ``xread_group`` streams method in ``commands/streams.py``
(see `#625 <https://github.com/aio-libs/aioredis/issues/625>`_);
Bugfixes
#459 <https://github.com/aio-libs/aioredis/issues/459>_);wait_closed implementation#498 <https://github.com/aio-libs/aioredis/issues/498>_);#605 <https://github.com/aio-libs/aioredis/issues/605>_);Improved Documentation
- Rewrite "Getting started" documentation.
(see `#641 <https://github.com/aio-libs/aioredis/issues/641>`_);
Misc
~~~~
- `#585 <https://github.com/aio-libs/aioredis/issues/585>`_,
`#611 <https://github.com/aio-libs/aioredis/issues/611>`_,
`#612 <https://github.com/aio-libs/aioredis/issues/612>`_,
`#619 <https://github.com/aio-libs/aioredis/issues/619>`_,
`#620 <https://github.com/aio-libs/aioredis/issues/620>`_,
`#642 <https://github.com/aio-libs/aioredis/issues/642>`_;
xdel and xtrim method which missed in commands/streams.py & also added unit test code for themcount argument to spop commandzpopmax and zpopmin redis commandstowncrier: change notes are now stored in CHANGES.txtBZPOPMAX and BZPOPMINCH and INCR options of the ZADD commandno_ack parameter to xread_group streams method in commands/streams.pywait_closed implementationImplemented new Stream command support (see #299);
NEW:
Implemented new Stream command support (see #299);
Reduce encode_command() cost about 60% (see #397);
FIX:
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);
MISC:
Update dependencies versions;
Multiple tests improvements;
encode_command() cost about 60%sendto syscallsINFO command result parsingConnectionsPool._drop_closed methodImplement new commands: wait, touch, swapdb, unlink (see #376);
NEW:
Implement new commands: wait, touch, swapdb, unlink (see #376);
Add async_op argument to flushall and flushdb commands (see #364, and #370);
FIX:
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 and #366);
Fix an issue with subscribe/psubscribe with empty pool (see #351 and #355);
Fix an issue when StreamReader's feed_data is called before set_parser (see #347);
MISC:
Update dependencies versions;
Multiple test fixes;
wait, touch, swapdb, unlinkasync_op argument to flushall and flushdb commandsminsize
greater than 1SentinelPool.discover_timeout usageReceiver hang on disconnectsubscribe/psubscribe with empty poolStreamReader's feed_data is called before set_parserFix deprecation warning (see #191 );
NEW:
Important! Drop Python 3.3, 3.4 support;
(see #321, #323 and #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);
FIX:
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);
MISC:
Multiple test fixes;
Add PyPy3 to build matrix;
Update dependencies versions;
Add missing Python 3.6 classifier;
Critical bug fixed in patched asyncio.Lock (see #256);
Fixed:
asyncio.Lock (see #256);Deprecation warning (see #191);
New features:
create_redis will yield Redis instance instead of RedisPool
(see #129);create_reconnecting_redis, create_redis_pool should be used instead;migrate_keys command (see #187);zrevrangebylex command (see #201);command, command_count, command_getkeys and comman_info commands (see #229);Fixed:
create_redis and create_redis_pool;__aiter__() (see #192);with (yield from pool) as conn (see #205);stop() (see #211);Misc:
Backport from master fix for indistinguishable commands future cancellation (see #316);
Fix:
asyncio.CancelledErrorFix time command result decoding when using connection-wide encoding setting (see #266);
FIX:
Critical bug fixed in patched asyncio.Lock (see #256);
Fixed:
asyncio.Lock (see #256);Added zrevrangebylex command (see #201);
New:
zrevrangebylex command (see #201);Fixed:
asyncio.Lock deadlock issue (see #231 and #241);zrevrangebylex commandFixed pubsub Receiver missing iter() method (see #203);
Pub/Sub connection commands accept Channel instances (see #168);
NEW:
Channel instances (see #168);aioredis.pubsub.Receiver (see #176);aioredis.abc module providing abstract base classes
defining interface for basic lib components (see #176);FIX:
MISC:
async/await syntax
also keeping yield from examples for history (see #173);Allow multiple keys in EXISTS command (see #156 and #157);
NEW:
FIX:
MISC:
EXISTS commandINFO command argument validationnext()Add hmset_dict command (see #130);
NEW:
hmset_dict command
(see #130);RedisConnection.address property;minsize/maxsize must not be None;close()/wait_closed()/closed interface for pool
(see #128);FIX:
hstrlen;MISC:
hmset_dict commandRedisConnection.address propertyminsize/maxsize must not be Noneclose()/wait_closed()/closed interface for poolhstrlencreate_pool() minsize default value changed to 1;
create_pool() minsize default value changed to 1;time() convertion to float
(see #126);hmset() method to return bool instead of b'OK'
(see #126);tr.execute() to fail)
(see #121);asyncio.Future uses with utility method
(get ready to Python 3.5.2 loop.create_future());create_pool() minsize default value changed to 1time() conversion to floathmset() method to return bool instead of b'OK'tr.execute() to fail)asyncio.Future uses with utility methodloop.create_future())Fixed Multi/Exec transactions cancellation issue (see #110 and #114);
Changes:
aioredis.ConnectionClosedError raised in execute_pubsub as well (see #108);Redis.slaveof() method signature changed: now to disable
replication one should call redis.slaveof(None) instead of redis.slaveof();Close all Pub/Sub channels on connection close (see #88);
Changes:
iter() method to aioredis.Channel allowing to use it
with async for (see #89);async/await syntax (see #93);create_connection (see #90);asyncio.async calls with wrapper that respects asyncio version (see #101);aioredis.ConnectionClosedError exception added. Raised if connection to Redis server is lost (see #108 and #109);aioredis.util.decode to recursively decode list responses;- Python 3.5 pep 492 support; - Documentation updates; - Few fixes;
Python 3.5 async support:
iscan, izscan, ihscan)with await pool: ... and async with pool.get() as conn: constructs)Fixed dropping closed connections from free pool
(see #83)
Docs updated
Redis cluster support work in progress
acquire call hangsinfo server command result parsing implementedhstrlen command addedDecoding data with encoding parameter now takes into account list (array) replies (see #68)
Decoding data with encoding parameter now takes into account
list (array) replies
(see #68)
encoding parameter added to following commands:
Backward incompatibility:
ltrim command now returns bool value instead of 'OK'
Tests updated
Logging added (aioredis.log module)
wait_message in pub/subFix in zrevrangebyscore command (see #62)
zrevrangebyscore commandwait_closed method added for clean connections shutdown
zscore command fixedDropped following Redis method -- Redis.multi(), Redis.exec(), Redis.discard()
Changes:
Pipelining implemented + more fixes
Pipelining implemented + more fixes
RedisConnection.execute refactored to support commands pipelining
(see #33)
Several fixes
WIP on transactions and commands interface
High-level commands implemented and tested:
create_connection, create_pool, create_redis functions updated: db and password arguments made keyword-only (see #26);
Changes:
Added transactions support in connection (high-level commands have some issues yet)
Changes included: - RedisConnection - RedisPool - Docs - WIP on high-level API
Changes included:
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →